コード例 #1
0
 protected virtual void OnMessageReceived(MessageEventArgs args)
 {
     lock (mLock)
     {
         mMessageReceivedHandler?.Invoke(this, args);
     }
 }
コード例 #2
0
        /// <summary>
        /// Handle received data
        /// </summary>
        /// <param name="data"></param>
        private void Handle(byte[] data)
        {
            UDPPacket packet = UDPPacket.GetPacket(data);

            if (packet != null)
            {
                switch (packet.Type)
                {
                case UDPPacketType.Message:

                    OnMessage?.Invoke(packet);
                    break;

                case UDPPacketType.Auth:

                    Authed = true;
                    OnAuthed?.Invoke();
                    break;

                case UDPPacketType.Ping:

                    Send(new UDPPacket(
                             new byte[] { 5 },
                             UDPPacketType.Pong));
                    break;

                default:
                    return;
                }
            }
        }
コード例 #3
0
        public void AddMessage(string message, int seconds)
        {
            Thread.Sleep(1000 * seconds);
            var thread = Thread.CurrentThread.ManagedThreadId;

            MessageEventHandler?.Invoke(this,
                                        new TaskMessageEventArgs($"{message} Hilo actual evento: {thread}\n"));
        }
コード例 #4
0
        /// <summary>
        /// Send message to all clients or to client with clientName
        /// </summary>
        /// <param name="message"></param>
        /// <param name="clientName">Null or name of client</param>
        private void SendMessageToClient(IMessage message, string clientName = null)
        {
            if (!ServerActive)
            {
                return;
            }

            //No Listeners
            if (MessageFromServerEvent == null)
            {
                return;
            }

            MessageEventHandler listener = null;

            Delegate[] dels = MessageFromServerEvent.GetInvocationList();

            foreach (Delegate del in dels)
            {
                IClient cli = (IClient)del.Target;
                if (clientName == null || clientName == cli.ClientName)
                {
                    try
                    {
                        Console.WriteLine("Send: " + message.GetType().Name + (clientName != null ? (" to " + clientName) : ""));
                        listener = (MessageEventHandler)del;
                        listener.Invoke(message);
                    }
                    catch
                    {
                        //Could not reach the destination, so remove it from the list
                        MessageFromServerEvent -= listener;
                        clients.Remove(cli.ClientName);
                    }
                }
            }
        }
コード例 #5
0
 /// <summary>
 ///     MessageReceived イベントを発生させます。
 /// </summary>
 private void MessageHolder_MessageReceived(T message)
 {
     Message = message;
     MessageEventHandler?.Invoke(this, new MessageEventArgs <T>(message));
 }
コード例 #6
0
 /// <summary>
 /// 打印错误信息
 /// </summary>
 /// <param name="str">待打印的字符串(红色)</param>
 public void WriteErrorLine(string str)
 {
     ExportEventHander?.Invoke(null, new MessageEventArgs(Color.Red, str));
 }