Beispiel #1
0
 /// <summary>
 /// Unregister a specific receiver.
 /// </summary>
 /// <param name="eventName">Name of the event.</param>
 /// <param name="callback">The event handler.</param>
 public void UnregisterEventReceiver(string eventName, OnReceiveEvent callback)
 {
     if (_eventMap.ContainsKey(eventName))
     {
         _eventMap[eventName].Remove(callback);
     }
 }
Beispiel #2
0
        public void Receive()
        {
            if (_client.Count == 0)
            {
                Task.Delay(1000).ContinueWith(t =>
                {
                    Receive();
                }, TaskScheduler.FromCurrentSynchronizationContext());
                return;
            }

            var bytes = new Byte[256];

            foreach (var client in _client)
            {
                var stream = client.GetStream();
                stream.ReadAsync(bytes, 0, bytes.Length).ContinueWith(task =>
                {
                    string message = Encoding.UTF8.GetString(bytes, 0, task.Result);
                    Console.WriteLine($"Reveive : {message} (Server)");

                    OnReceiveEvent?.Invoke(message, client);
                    if (message.Length == 0)
                    {
                        Console.WriteLine($@"Passive Closing : {client.Client.RemoteEndPoint}");
                        client.Close();
                    }

                    //SocketException error = new SocketException();
                    //Console.WriteLine(error);
                }, TaskScheduler.FromCurrentSynchronizationContext());
            }
        }
        // 受信待機処理
        private void Receive()
        {
            IsWorking = true;
            while (IsWorking)
            {
                // 指定したパイプ名のパイプを生成
                using (NamedPipeServerStream server = new NamedPipeServerStream(PipeName))
                {
                    // 受信があるまで待機
                    server.WaitForConnection();

                    // 受信後、ストリームから内容を読み込む
                    while (server.IsConnected)
                    {
                        using (BinaryReader sr = new BinaryReader(server, Encoding.UTF8))
                        {
                            // ストリームから1行ずつ読込
                            string line = sr.ReadString();
                            line = line.Trim();
                            if (line.Length > 0)
                            {
                                // メッセージ内容と共にイベント発生
                                Thread t = new Thread(() =>
                                {
                                    OnReceiveEvent.Invoke(line);
                                });
                                t.Start();
                            }
                        }
                    }
                }
                Thread.Sleep(Wait);
            }
        }
Beispiel #4
0
 /// <summary>
 /// Register an event receiver with this EventManager.
 /// </summary>
 /// <param name="eventType">Event type defined in Constants</param>
 /// <param name="callback">The event receiver function.</param>
 public void RegisterEventReceiver(Constants.Event eventType, OnReceiveEvent callback)
 {
     if (m_EventTypeName.Count == 0)
     {
         InitializeEventTypeNames();
     }
     RegisterEventReceiver(m_EventTypeName[eventType], callback);
 }
Beispiel #5
0
        /// <summary>
        /// Handle received IP addresses
        /// </summary>
        IEnumerator ProcessReceived()
        {
            while (true)
            {
                yield return(new WaitUntil(() => received.Count > 0));

                OnReceiveEvent?.Invoke(received.Dequeue());
            }
        }
Beispiel #6
0
        public async Task Connect()
        {
            await _connection.Start();

            var work = _proxy.Invoke("Register", "123456");

            _proxy.On("SendMessage", (string userId, string content) =>
            {
                OnReceiveEvent?.Invoke(userId, content);
            });
        }
Beispiel #7
0
 /// <summary>
 /// Register an event receiver with this EventManager.
 /// </summary>
 /// <param name="eventName">The name of the event.</param>
 /// <param name="callback">The event receiver function.</param>
 public void RegisterEventReceiver(string eventName, OnReceiveEvent callback)
 {
     if (!_eventMap.ContainsKey(eventName))
     {
         _eventMap.Add(eventName, new List <OnReceiveEvent>()
         {
             callback
         });
     }
     else
     {
         _eventMap[eventName].Add(callback);
     }
 }
Beispiel #8
0
 //负责连接的方法
 public void  Connect()
 {
     try
     {
         _connection.Start();
         _proxy.On("sendMessage", (string platform, string msg) =>
         {
             OnReceiveEvent?.Invoke(this, platform + ":" + msg);
         });
     }
     catch (Exception ex)
     {
         System.Diagnostics.Debug.WriteLine(ex.ToString());
     }
 }
Beispiel #9
0
        /// <summary>
        /// 接收数据
        /// </summary>
        /// <param name="data">数据</param>
        /// <param name="length">数据长度</param>
        protected virtual void OnReceive(byte[] data, int length)
        {
            var protocol = Protocol.Parse(data, length);

            if (protocol == null)
            {
                return;
            }

            if (!protocol.DstId.Equals(clientId))
            {
                return;
            }

            var sessionId = protocol.SessionId;

            if (string.IsNullOrEmpty(sessionId))
            {
                sessionId = GenerateSessionId();
            }

            var session = Get(sessionId);

            if (session != null)
            {
                session.dstId          = protocol.SrcId;
                session.LastActiveTime = DateTime.Now;
            }

            if ((protocol.Data == null) || (protocol.Data.Length == 0))
            {
                return;
            }

            OnReceiveEvent.Invoke(session, protocol.Data);
        }
Beispiel #10
0
 private void OnReceiveData(List <Packet.Packet> packets)
 {
     OnReceiveEvent?.Invoke(_id, packets);
 }
Beispiel #11
0
 public override void Send <EventType>(EventType ev)
 {
     ev.Sender = this;
     OnReceiveEvent?.Invoke(ev);
     ReceivedEvents.Add(ev);
 }
Beispiel #12
0
 private void FireEvent(BaseDTO args)
 {
     OnReceiveEvent?.Invoke(args);
 }