Add EventDriver.exit and move all event callback parameters to the end.
This commit is contained in:
parent
3d8183248c
commit
844e955cdb
7 changed files with 125 additions and 36 deletions
|
@ -98,7 +98,7 @@ struct StreamConnectionImpl {
|
|||
{
|
||||
reader.start();
|
||||
if (m_readBufferFill >= 2) onReadLineData(m_socket, IOStatus.ok, 0);
|
||||
else eventDriver.readSocket(m_socket, m_readBuffer[m_readBufferFill .. $], &onReadLineData, IOMode.once);
|
||||
else eventDriver.readSocket(m_socket, m_readBuffer[m_readBufferFill .. $], IOMode.once, &onReadLineData);
|
||||
reader.wait();
|
||||
auto ln = m_line;
|
||||
m_line = null;
|
||||
|
@ -108,7 +108,7 @@ struct StreamConnectionImpl {
|
|||
void write(const(ubyte)[] data)
|
||||
{
|
||||
writer.start();
|
||||
eventDriver.writeSocket(m_socket, data, &onWrite, IOMode.all);
|
||||
eventDriver.writeSocket(m_socket, data, IOMode.all, &onWrite);
|
||||
writer.wait();
|
||||
}
|
||||
|
||||
|
@ -159,7 +159,7 @@ struct StreamConnectionImpl {
|
|||
|
||||
reader.finish();
|
||||
} else if (m_readBuffer.length - m_readBufferFill > 0) {
|
||||
eventDriver.readSocket(m_socket, m_readBuffer[m_readBufferFill .. $], &onReadLineData, IOMode.once);
|
||||
eventDriver.readSocket(m_socket, m_readBuffer[m_readBufferFill .. $], IOMode.once, &onReadLineData);
|
||||
} else {
|
||||
reader.finish(exh);
|
||||
}
|
||||
|
@ -174,9 +174,9 @@ void main()
|
|||
auto listener = eventDriver.listenStream(addr, toDelegate(&onClientConnect));
|
||||
enforce(listener != StreamListenSocketFD.invalid, "Failed to listen for connections.");
|
||||
|
||||
import core.time : msecs;
|
||||
/*import core.time : msecs;
|
||||
eventDriver.setTimer(eventDriver.createTimer((tm) { print("timer 1"); }), 1000.msecs, 1000.msecs);
|
||||
eventDriver.setTimer(eventDriver.createTimer((tm) { print("timer 2"); }), 250.msecs, 500.msecs);
|
||||
eventDriver.setTimer(eventDriver.createTimer((tm) { print("timer 2"); }), 250.msecs, 500.msecs);*/
|
||||
|
||||
print("Listening for requests on port 8080...");
|
||||
while (eventDriver.waiterCount)
|
||||
|
@ -209,7 +209,7 @@ struct ClientHandler {
|
|||
|
||||
auto conn = StreamConnection(client, linebuf);
|
||||
try {
|
||||
while (!conn.empty) {
|
||||
while (true) {
|
||||
conn.readLine();
|
||||
|
||||
ubyte[] ln;
|
||||
|
|
|
@ -49,7 +49,7 @@ struct ClientHandler {
|
|||
{
|
||||
onLine = on_line;
|
||||
if (linefill >= 2) onReadData(client, IOStatus.ok, 0);
|
||||
else eventDriver.readSocket(client, linebuf[linefill .. $], &onReadData, IOMode.once);
|
||||
else eventDriver.readSocket(client, linebuf[linefill .. $], IOMode.once, &onReadData);
|
||||
}
|
||||
|
||||
void onRequestLine(ubyte[] ln)
|
||||
|
@ -68,7 +68,7 @@ struct ClientHandler {
|
|||
{
|
||||
if (ln.length == 0) {
|
||||
auto reply = cast(const(ubyte)[])"HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 13\r\nKeep-Alive: timeout=10\r\n\r\nHello, World!";
|
||||
eventDriver.writeSocket(client, reply, &onWriteFinished, IOMode.all);
|
||||
eventDriver.writeSocket(client, reply, IOMode.all, &onWriteFinished);
|
||||
} else readLine(&onHeaderLine);
|
||||
}
|
||||
|
||||
|
@ -101,7 +101,7 @@ struct ClientHandler {
|
|||
|
||||
onLine(linebuf[linefill + idx + 2 .. linefill + idx + 2 + idx]);
|
||||
} else if (linebuf.length - linefill > 0) {
|
||||
eventDriver.readSocket(client, linebuf[linefill .. $], &onReadData, IOMode.once);
|
||||
eventDriver.readSocket(client, linebuf[linefill .. $], IOMode.once, &onReadData);
|
||||
} else {
|
||||
// ERROR: header line too long
|
||||
print("Header line too long");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue