From 23f146afdda078131a9db53697a1bac08b0d6534 Mon Sep 17 00:00:00 2001 From: Sem van der Hoeven Date: Fri, 25 Sep 2020 13:41:54 +0200 Subject: [PATCH] getting response from server through callback --- RH-Engine/Program.cs | 38 +++++++++++++++++-------------- RH-Engine/ServerResponseReader.cs | 15 ++++++++---- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/RH-Engine/Program.cs b/RH-Engine/Program.cs index 3951d32..caac7ac 100644 --- a/RH-Engine/Program.cs +++ b/RH-Engine/Program.cs @@ -31,16 +31,18 @@ namespace RH_Engine TcpClient client = new TcpClient("145.48.6.10", 6666); CreateConnection(client.GetStream()); + } - serverResponseReader = new ServerResponseReader(client.GetStream()); + private static void initReader(NetworkStream stream) + { + serverResponseReader = new ServerResponseReader(stream); serverResponseReader.callback = HandleResponse; - - + serverResponseReader.StartRead(); } public static void HandleResponse(string message) { - + Console.WriteLine("GOT MESSAGE FROM CALLBACK!!!!! " + message); } /// @@ -58,7 +60,7 @@ namespace RH_Engine stream.Write(res); - //Console.WriteLine("sent message " + message); + Console.WriteLine("sent message " + message); } /// @@ -96,25 +98,27 @@ namespace RH_Engine /// the network stream to use private static void CreateConnection(NetworkStream stream) { + initReader(stream); + 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); - if (tunnelID == null) - { - Console.WriteLine("could not find a valid tunnel id!"); - return; - } + //string tunnelID = JSONParser.GetTunnelID(tunnelResponse); + //if (tunnelID == null) + //{ + // Console.WriteLine("could not find a valid tunnel id!"); + // return; + //} - sendCommands(stream, tunnelID); + //sendCommands(stream, tunnelID); } /// diff --git a/RH-Engine/ServerResponseReader.cs b/RH-Engine/ServerResponseReader.cs index 811352c..01d9a64 100644 --- a/RH-Engine/ServerResponseReader.cs +++ b/RH-Engine/ServerResponseReader.cs @@ -27,21 +27,28 @@ namespace RH_Engine if (this.callback == null) { throw new Exception("Callback not initialized!"); - } else - while (true) + } + else { + Console.WriteLine("Starting loop for reading"); + while (true) + { string res = ReadPrefMessage(Stream); + //Console.WriteLine("[SERVERRESPONSEREADER] got message from server: " + res); this.callback(res); + } } }); + + t.Start(); } public static string ReadPrefMessage(NetworkStream stream) { byte[] lengthBytes = new byte[4]; - stream.Read(lengthBytes, 0, 4); - Console.WriteLine("read message.."); + int streamread = stream.Read(lengthBytes, 0, 4); + Console.WriteLine("read message.. " + streamread); int length = BitConverter.ToInt32(lengthBytes);