diff --git a/Server/Models/ServerClient.cs b/Server/Models/ServerClient.cs index eb07ade..b82e4f4 100644 --- a/Server/Models/ServerClient.cs +++ b/Server/Models/ServerClient.cs @@ -10,13 +10,12 @@ namespace Server.Models { class ServerClient : ObservableObject { - public string Username { get; set; } private TcpClient tcpClient; private NetworkStream stream; private byte[] buffer = new byte[1024]; private byte[] totalBuffer = new byte[1024]; private int totalBufferReceived = 0; - public User user; + public User User { get; set; } /// @@ -85,7 +84,7 @@ namespace Server.Models /// the incoming message private void HandleIncomingMessage(byte[] message) { - Debug.WriteLine($"Got message from {Username} : {message}"); + Debug.WriteLine($"Got message from {User?.Username} : {message}"); byte id = message[0]; byte[] payload = new byte[message.Length - 1]; Array.Copy(message,1,payload,0,message.Length-1); @@ -97,8 +96,9 @@ namespace Server.Models string uName = JSONConvert.GetUsernameLogin(message); if (uName != null) { - Username = uName; - Debug.WriteLine("[SERVERCLIENT] set username to " + Username); + User = new User(uName); + User.Username = uName; + Debug.WriteLine("[SERVERCLIENT] set username to " + uName); } break; diff --git a/SharedClientServer/JSONConvert.cs b/SharedClientServer/JSONConvert.cs index c62b9ae..1eb5c04 100644 --- a/SharedClientServer/JSONConvert.cs +++ b/SharedClientServer/JSONConvert.cs @@ -11,6 +11,7 @@ namespace SharedClientServer { string msg = Encoding.ASCII.GetString(json); dynamic payload = JsonConvert.DeserializeObject(msg); + return (payload.username, payload.message); } @@ -19,5 +20,22 @@ namespace SharedClientServer dynamic payload = JsonConvert.DeserializeObject(Encoding.ASCII.GetString(json)); return payload.username; } + + /// + /// constructs a message that can be sent to the clients or server + /// + /// the identifier for what kind of message it is + /// the json payload + /// a byte array containing a message that can be sent to clients or server + public static byte[] GetMessageToSend(byte identifier, dynamic payload) + { + // convert the dynamic to bytes + byte[] payloadBytes = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(payload)); + // make the array that holds the message and copy the payload into it with the first spot containing the identifier + byte[] res = new byte[payloadBytes.Length + 1]; + Array.Copy(payloadBytes, 0, res, 1, payloadBytes.Length); + res[0] = identifier; + return res; + } } }