Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
            }
        }