mirror of
https://github.com/deavmi/birchwood
synced 2024-09-20 01:43:50 +02:00
Receiver
- Fixed conflicting symbol name `Event` arising from the use of `Eventy` and `libsnooze` - Initialize the libsnooze event - Initialize the queue mutex - Set the thread's worker function Sender - Fixed conflicting symbol name `Event` arising from the use of `Eventy` and `libsnooze` - Initialize the libsnooze event - Initialize the queue mutex - Set the thread's worker function Protocol - Moved module `message` to new package `protocol` - Moved module `constants` to new package `protocol`
This commit is contained in:
parent
a006057c7f
commit
32817d4134
@ -5,11 +5,15 @@ import core.thread : Thread, dur;
|
|||||||
import std.container.slist : SList;
|
import std.container.slist : SList;
|
||||||
import core.sync.mutex : Mutex;
|
import core.sync.mutex : Mutex;
|
||||||
|
|
||||||
|
import eventy : EventyEvent = Event;
|
||||||
|
|
||||||
// TODO: Examine the below import which seemingly fixes stuff for libsnooze
|
// TODO: Examine the below import which seemingly fixes stuff for libsnooze
|
||||||
import libsnooze.clib;
|
import libsnooze.clib;
|
||||||
import libsnooze;
|
import libsnooze;
|
||||||
|
|
||||||
import birchwood.client;
|
import birchwood.client;
|
||||||
|
import birchwood.protocol.messages : Message, decodeMessage;
|
||||||
|
import std.string : indexOf;
|
||||||
|
|
||||||
public final class ReceiverThread : Thread
|
public final class ReceiverThread : Thread
|
||||||
{
|
{
|
||||||
@ -40,7 +44,10 @@ public final class ReceiverThread : Thread
|
|||||||
*/
|
*/
|
||||||
this(Client client)
|
this(Client client)
|
||||||
{
|
{
|
||||||
|
super(&recvHandlerFunc);
|
||||||
this.client = client;
|
this.client = client;
|
||||||
|
this.receiveEvent = new Event(); // TODO: Catch any libsnooze error here
|
||||||
|
this.recvQueueLock = new Mutex();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,7 +66,7 @@ public final class ReceiverThread : Thread
|
|||||||
*/
|
*/
|
||||||
private void recvHandlerFunc()
|
private void recvHandlerFunc()
|
||||||
{
|
{
|
||||||
while(running)
|
while(client.running)
|
||||||
{
|
{
|
||||||
// TODO: Insert libsnooze wait here
|
// TODO: Insert libsnooze wait here
|
||||||
|
|
||||||
@ -137,8 +144,8 @@ public final class ReceiverThread : Thread
|
|||||||
|
|
||||||
/* TODO: Implement */
|
/* TODO: Implement */
|
||||||
// TODO: Remove the Eventy push and replace with a handler call (on second thought no)
|
// TODO: Remove the Eventy push and replace with a handler call (on second thought no)
|
||||||
Event pongEvent = new PongEvent(pingID);
|
EventyEvent pongEvent = new PongEvent(pingID);
|
||||||
engine.push(pongEvent);
|
client.engine.push(pongEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now let's go message by message */
|
/* Now let's go message by message */
|
||||||
@ -159,8 +166,8 @@ public final class ReceiverThread : Thread
|
|||||||
curMsg = Message.parseReceivedMessage(messageNormal);
|
curMsg = Message.parseReceivedMessage(messageNormal);
|
||||||
|
|
||||||
// TODO: Remove the Eventy push and replace with a handler call (on second thought no)
|
// TODO: Remove the Eventy push and replace with a handler call (on second thought no)
|
||||||
Event ircEvent = new IRCEvent(curMsg);
|
EventyEvent ircEvent = new IRCEvent(curMsg);
|
||||||
engine.push(ircEvent);
|
client.engine.push(ircEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,7 +40,10 @@ public final class SenderThread : Thread
|
|||||||
*/
|
*/
|
||||||
this(Client client)
|
this(Client client)
|
||||||
{
|
{
|
||||||
|
super(&sendHandlerFunc);
|
||||||
this.client = client;
|
this.client = client;
|
||||||
|
this.sendEvent = new Event(); // TODO: Catch any libsnooze error here
|
||||||
|
this.sendQueueLock = new Mutex();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -54,7 +57,7 @@ public final class SenderThread : Thread
|
|||||||
/* TODO: Hoist up into ConnInfo */
|
/* TODO: Hoist up into ConnInfo */
|
||||||
ulong fakeLagInBetween = 1;
|
ulong fakeLagInBetween = 1;
|
||||||
|
|
||||||
while(running)
|
while(client.running)
|
||||||
{
|
{
|
||||||
// TODO: Insert libsnooze wait here
|
// TODO: Insert libsnooze wait here
|
||||||
|
|
||||||
@ -70,7 +73,7 @@ public final class SenderThread : Thread
|
|||||||
|
|
||||||
foreach(ubyte[] message; sendQueue[])
|
foreach(ubyte[] message; sendQueue[])
|
||||||
{
|
{
|
||||||
this.socket.send(message);
|
client.socket.send(message);
|
||||||
Thread.sleep(dur!("seconds")(fakeLagInBetween));
|
Thread.sleep(dur!("seconds")(fakeLagInBetween));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
module birchwood.constants;
|
module birchwood.protocol.constants;
|
||||||
|
|
||||||
/* Reply object */
|
/* Reply object */
|
||||||
public enum ReplyType : ulong
|
public enum ReplyType : ulong
|
@ -1,10 +1,10 @@
|
|||||||
module birchwood.messages;
|
module birchwood.protocol.messages;
|
||||||
|
|
||||||
import dlog;
|
import dlog;
|
||||||
|
|
||||||
import std.string;
|
import std.string;
|
||||||
import std.conv : to, ConvException;
|
import std.conv : to, ConvException;
|
||||||
import birchwood.constants : ReplyType;
|
import birchwood.protocol.constants : ReplyType;
|
||||||
|
|
||||||
// TODO: Before release we should remove this import
|
// TODO: Before release we should remove this import
|
||||||
import std.stdio : writeln;
|
import std.stdio : writeln;
|
3
source/birchwood/protocol/package.d
Normal file
3
source/birchwood/protocol/package.d
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module birchwood.protocol;
|
||||||
|
|
||||||
|
public import birchwood.protocol.messages : Message;
|
Loading…
Reference in New Issue
Block a user