private MyBuffer MessageToBuffer(IServerMessage message) { if (!(message.GetType().GetCustomAttribute(typeof(ServerMessageTypeAttribute)) is ServerMessageTypeAttribute messageTypeAttr)) { throw new NotImplementedException($"Not found message type for{message.GetType().Name}"); } var mesageType = messageTypeAttr.ServerMessageType; var buff = MyBuffer.Create() .SetUint8((byte)mesageType) .SetData(message); return(buff); }
public void Broadcast(MyBuffer buff) { try { uint[] clients; lock (Clients) { clients = Clients.Keys.ToArray(); } for (var i = 0; i < clients.Length; i++) { SendMessage(clients[i], buff); } } catch (Exception e) { Logger.Log(e); } }
public void SendMessage(uint clientId, MyBuffer buff) { try { IWsClient wsClient; lock (Clients) Clients.TryGetValue(clientId, out wsClient); wsClient?.SendMessage(buff); } catch (ObjectDisposedException ee) { Logger.Log(ee); RemoveClient(clientId); } catch (Exception e) { Console.WriteLine(e); } }