1
0
mirror of https://github.com/deavmi/birchwood synced 2024-09-20 09:23:38 +02:00

- Removed testing code from processMessage(ubyte[])

- Implemented encode()
This commit is contained in:
Tristan B. Velloza Kildaire 2022-11-05 12:10:51 +02:00
parent 15d2fa2deb
commit 441fd20302
2 changed files with 36 additions and 61 deletions

View File

@ -67,12 +67,16 @@ public struct ConnectionInfo
/* Client behaviour (TODO: what is sleep(0), like nothing) */ /* Client behaviour (TODO: what is sleep(0), like nothing) */
private ulong fakeLag = 0; private ulong fakeLag = 0;
/* The quit message */
public const string quitMessage;
/* TODO: before publishing change this bulk size */ /* TODO: before publishing change this bulk size */
private this(Address addrInfo, string nickname, ulong bulkReadSize = 20) private this(Address addrInfo, string nickname, ulong bulkReadSize = 20, string quitMessage = "birchwood client disconnecting...")
{ {
this.addrInfo = addrInfo; this.addrInfo = addrInfo;
this.nickname = nickname; this.nickname = nickname;
this.bulkReadSize = bulkReadSize; this.bulkReadSize = bulkReadSize;
this.quitMessage = quitMessage;
} }
public ulong getBulkReadSize() public ulong getBulkReadSize()
@ -139,7 +143,7 @@ public struct ConnectionInfo
} }
} }
public class Client public final class Client : Thread
{ {
/* Connection information */ /* Connection information */
private ConnectionInfo connInfo; private ConnectionInfo connInfo;
@ -160,6 +164,7 @@ public class Client
this(ConnectionInfo connInfo) this(ConnectionInfo connInfo)
{ {
super(&loop);
this.connInfo = connInfo; this.connInfo = connInfo;
} }
@ -410,6 +415,9 @@ public class Client
this.sendHandler = new Thread(&sendHandlerFunc); this.sendHandler = new Thread(&sendHandlerFunc);
this.sendHandler.start(); this.sendHandler.start();
/* Start socket loop */
this.start();
} }
catch(SocketOSException e) catch(SocketOSException e)
@ -628,6 +636,8 @@ public class Client
} }
bool yes = true; bool yes = true;
bool hasJoined = false; bool hasJoined = false;
@ -638,62 +648,6 @@ public class Client
// logger.log("InterpAsString: "~cast(string)message); // logger.log("InterpAsString: "~cast(string)message);
receiveQ(message); receiveQ(message);
/* FIXME: Move all the below code into a testing method !! */
j++;
if(j >= 3)
{
// import core.thread;
// Thread.sleep(dur!("seconds")(10));
if(yes)
{
// this.socket.send((cast(ubyte[])"CAP LS")~[cast(ubyte)13, cast(ubyte)10]);
import core.thread;
Thread.sleep(dur!("seconds")(2));
this.socket.send((cast(ubyte[])"NICK birchwood")~[cast(ubyte)13, cast(ubyte)10]);
import core.thread;
Thread.sleep(dur!("seconds")(2));
this.socket.send((cast(ubyte[])"USER doggie doggie irc.frdeenode.net :Tristan B. Kildaire")~[cast(ubyte)13, cast(ubyte)10]);
yes=false;
}
else
{
if(hasJoined == false)
{
import core.thread;
Thread.sleep(dur!("seconds")(4));
this.socket.send((cast(ubyte[])"join #birchwoodtesting")~[cast(ubyte)13, cast(ubyte)10]);
hasJoined = true;
import core.thread;
Thread.sleep(dur!("seconds")(2));
sendMessage("names");
}
}
// this.socket.send((cast(ubyte[])"PONG irc.freenode.net")~[cast(ubyte)13, cast(ubyte)10]);
// import core.thread;
// Thread.sleep(dur!("seconds")(2));
// this.socket.send((cast(ubyte[])"join #birchwoodtesting")~[cast(ubyte)13, cast(ubyte)10]);
// yes=false;
}
} }
/** /**
@ -702,7 +656,7 @@ public class Client
* This simply receives messages from the server, * This simply receives messages from the server,
* parses them and puts them into the receive queue * parses them and puts them into the receive queue
*/ */
public void loop() private void loop()
{ {
/* TODO: We could do below but nah for now as we know max 512 bytes */ /* TODO: We could do below but nah for now as we know max 512 bytes */
/* TODO: Make the read bulk size a configurable parameter */ /* TODO: Make the read bulk size a configurable parameter */
@ -823,7 +777,27 @@ public class Client
client.connect(); client.connect();
client.loop();
import core.thread;
Thread.sleep(dur!("seconds")(2));
client.command(new Message("", "NICK", "birchwood"));
Thread.sleep(dur!("seconds")(2));
client.command(new Message("", "USER", "doggie doggie irc.frdeenode.net :Tristan B. Kildaire"));
Thread.sleep(dur!("seconds")(4));
client.command(new Message("", "JOIN", "#birchwoodtesting"));
Thread.sleep(dur!("seconds")(2));
client.command(new Message("", "NAMES", ""));
/* TODO: Add a check here to make sure the above worked I guess? */
/* TODO: Make this end */
// while(true)
// {
// }
} }

View File

@ -251,7 +251,8 @@ public class Message
/* TODO: Implement encoder function */ /* TODO: Implement encoder function */
public string encode() public string encode()
{ {
return null; string fullLine = from~" "~command~" "~params;
return fullLine;
} }
public static Message parseReceivedMessage(string message) public static Message parseReceivedMessage(string message)