Пример #1
0
        protected virtual void OnMessageLoad(EndPointMessage message)
        {
            var sender = Instance.DBTable.LoadById(message.SenderName);

            if (sender == null)
            {
                return;
            }
            sender.ReceiveCount++;
            sender.ReceiveLength += message.Lenght;

            switch (message.Type)
            {
            case (SocketMessageType.Hello):
                sender.Active = true;
                break;

            case (SocketMessageType.Login):
                sender.Active = true;
                Send(endPoint.GetBytes(), sender, SocketMessageType.Hello);
                break;

            case (SocketMessageType.Logout):
                sender.Detach();
                break;

            case (SocketMessageType.Data):
                Deserialize(message.Data);
                break;
            }
            MessageLoad?.Invoke(message);
        }
Пример #2
0
        public void Send(byte[] data, Instance address = null, SocketMessageType type = SocketMessageType.Data)
        {
            var buffer = EndPointMessage.Write(new EndPointMessage()
            {
                SenderName     = instance.Id.ToString(),
                SenderEndPoint = endPoint,
                Type           = type,
                Data           = data
            });

            if (type == SocketMessageType.Login)
            {
                Instance.DBTable.Load();
            }

            foreach (Instance item in Instance.DBTable)
            {
                if (address == null || item == address)
                {
                    if (item.Active.Value && item.EndPoint != null && !item.EndPoint.Equals(endPoint) && !IPAddress.Loopback.Equals(item.EndPoint.Address))
                    {
                        Send(buffer, item.EndPoint);
                    }
                }
            }
        }
Пример #3
0
 protected override async void OnMessageLoad(EndPointMessage message)
 {
     base.OnMessageLoad(message);
     if (message.Type == SocketMessageType.Data)
     {
         var list = ParseMessage(message.Data);
         if (list.Length > 0)
         {
             await SendToWebClients(list);
         }
     }
 }
Пример #4
0
        protected override void OnDataLoad(UdpServerEventArgs arg)
        {
            base.OnDataLoad(arg);
            //arg.Point
            var message = EndPointMessage.Read(arg.Data);

            if (message != null)
            {
                message.RecivedEndPoint = arg.Point;
                try { OnMessageLoad(message); }
                catch (Exception e) { Helper.OnException(e); }
            }
        }
Пример #5
0
        public void Send(NotifyMessageItem[] items, IInstance address = null)
        {
            var buffer = (byte[])null;

            foreach (IInstance item in Instance.DBTable)
            {
                if (CheckAddress(item, address))
                {
                    if (buffer == null)
                    {
                        buffer = EndPointMessage.Write(new EndPointMessage
                        {
                            SenderName     = instance.Id.ToString(),
                            SenderEndPoint = endPoint,
                            Type           = SocketMessageType.Data,
                            Data           = Serialize(items)
                        });
                    }
                    Send(buffer, item.EndPoint, item);
                }
            }
        }
Пример #6
0
        public void Send(byte[] data, IInstance address = null, SocketMessageType type = SocketMessageType.Data, bool checkState = false)
        {
            var buffer = EndPointMessage.Write(new EndPointMessage()
            {
                SenderName     = instance.Id.ToString(),
                SenderEndPoint = endPoint,
                Type           = type,
                Data           = data
            });

            if (type == SocketMessageType.Login)
            {
                Instance.DBTable.Load();
            }

            foreach (IInstance item in Instance.DBTable)
            {
                if (CheckAddress(item, address, checkState))
                {
                    Send(buffer, item.EndPoint, item);
                }
            }
        }