mirror of https://github.com/deavminet/dnetd.git
parent
9f0d66b7bc
commit
9f7330a3df
|
@ -12,7 +12,7 @@ import std.socket;
|
|||
import gogga;
|
||||
import core.thread;
|
||||
import tristanable.encoding : DataMessage;
|
||||
import bmessage : bSendMessage = sendMessage;
|
||||
import bmessage : bSendMessage = sendMessage, bReceiveMessage = receiveMessage;
|
||||
|
||||
/**
|
||||
* Link manager
|
||||
|
@ -132,6 +132,24 @@ public final class DLink : Thread
|
|||
/* Initialize a new outbound connection */
|
||||
initializeOutboundConnection();
|
||||
|
||||
bool status = linkHandshake();
|
||||
|
||||
/* TODO: Implement me */
|
||||
while(true)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs the server LINK command and makes sure
|
||||
* the server accepts the linking and also that the
|
||||
* links name on our local server match up
|
||||
*/
|
||||
private bool linkHandshake()
|
||||
{
|
||||
bool status = true;
|
||||
|
||||
/* TODO: Send LINK (1) command */
|
||||
byte[] data;
|
||||
data ~= [1];
|
||||
|
@ -145,13 +163,35 @@ public final class DLink : Thread
|
|||
DataMessage message = new DataMessage(0, data);
|
||||
bSendMessage(outboundSocket, message.encode());
|
||||
|
||||
/* TODO: Await an acknowledgement [status] */
|
||||
byte[] receivedResponseBytes;
|
||||
bReceiveMessage(outboundSocket, receivedResponseBytes);
|
||||
DataMessage receivedResponse = DataMessage.decode(receivedResponseBytes);
|
||||
|
||||
ubyte[] dataReply = cast(ubyte[])receivedResponse.getData();
|
||||
|
||||
/* TODO: Implement me */
|
||||
while(true)
|
||||
/* TODO: 0 is good, 1 is bad */
|
||||
if(dataReply[0] == 0)
|
||||
{
|
||||
/* TODO: Get server name, makes sure it matches on in config file */
|
||||
|
||||
|
||||
}
|
||||
else if(dataReply[0] == 1)
|
||||
{
|
||||
/* TODO: Handle this case */
|
||||
gprintln("Server linking rejected", DebugType.ERROR);
|
||||
status = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* TODO: Handle this case */
|
||||
status = false;
|
||||
}
|
||||
/* TODO: If 0, then expect following [nameLen, name] */
|
||||
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue