getting response from server through callback

This commit is contained in:
Sem van der Hoeven
2020-09-25 13:41:54 +02:00
parent fac3987678
commit 23f146afdd
2 changed files with 32 additions and 21 deletions

View File

@@ -31,16 +31,18 @@ namespace RH_Engine
TcpClient client = new TcpClient("145.48.6.10", 6666); TcpClient client = new TcpClient("145.48.6.10", 6666);
CreateConnection(client.GetStream()); CreateConnection(client.GetStream());
}
serverResponseReader = new ServerResponseReader(client.GetStream()); private static void initReader(NetworkStream stream)
{
serverResponseReader = new ServerResponseReader(stream);
serverResponseReader.callback = HandleResponse; serverResponseReader.callback = HandleResponse;
serverResponseReader.StartRead();
} }
public static void HandleResponse(string message) public static void HandleResponse(string message)
{ {
Console.WriteLine("GOT MESSAGE FROM CALLBACK!!!!! " + message);
} }
/// <summary> /// <summary>
@@ -58,7 +60,7 @@ namespace RH_Engine
stream.Write(res); stream.Write(res);
//Console.WriteLine("sent message " + message); Console.WriteLine("sent message " + message);
} }
/// <summary> /// <summary>
@@ -96,25 +98,27 @@ namespace RH_Engine
/// <param name="stream">the network stream to use</param> /// <param name="stream">the network stream to use</param>
private static void CreateConnection(NetworkStream stream) private static void CreateConnection(NetworkStream stream)
{ {
initReader(stream);
WriteTextMessage(stream, "{\r\n\"id\" : \"session/list\"\r\n}"); WriteTextMessage(stream, "{\r\n\"id\" : \"session/list\"\r\n}");
string id = JSONParser.GetSessionID(ReadPrefMessage(stream), PCs); //string id = JSONParser.GetSessionID(ReadPrefMessage(stream), PCs);
string tunnelCreate = "{\"id\" : \"tunnel/create\", \"data\" : {\"session\" : \"" + id + "\"}}"; //string tunnelCreate = "{\"id\" : \"tunnel/create\", \"data\" : {\"session\" : \"" + id + "\"}}";
WriteTextMessage(stream, tunnelCreate); //WriteTextMessage(stream, tunnelCreate);
string tunnelResponse = ReadPrefMessage(stream); //string tunnelResponse = ReadPrefMessage(stream);
Console.WriteLine(tunnelResponse); //Console.WriteLine(tunnelResponse);
string tunnelID = JSONParser.GetTunnelID(tunnelResponse); //string tunnelID = JSONParser.GetTunnelID(tunnelResponse);
if (tunnelID == null) //if (tunnelID == null)
{ //{
Console.WriteLine("could not find a valid tunnel id!"); // Console.WriteLine("could not find a valid tunnel id!");
return; // return;
} //}
sendCommands(stream, tunnelID); //sendCommands(stream, tunnelID);
} }
/// <summary> /// <summary>

View File

@@ -27,21 +27,28 @@ namespace RH_Engine
if (this.callback == null) if (this.callback == null)
{ {
throw new Exception("Callback not initialized!"); throw new Exception("Callback not initialized!");
} else }
while (true) else
{ {
Console.WriteLine("Starting loop for reading");
while (true)
{
string res = ReadPrefMessage(Stream); string res = ReadPrefMessage(Stream);
//Console.WriteLine("[SERVERRESPONSEREADER] got message from server: " + res);
this.callback(res); this.callback(res);
}
} }
}); });
t.Start();
} }
public static string ReadPrefMessage(NetworkStream stream) public static string ReadPrefMessage(NetworkStream stream)
{ {
byte[] lengthBytes = new byte[4]; byte[] lengthBytes = new byte[4];
stream.Read(lengthBytes, 0, 4); int streamread = stream.Read(lengthBytes, 0, 4);
Console.WriteLine("read message.."); Console.WriteLine("read message.. " + streamread);
int length = BitConverter.ToInt32(lengthBytes); int length = BitConverter.ToInt32(lengthBytes);