Beispiel #1
0
        void IMessageDispatcher.OnMessage(UserToken user, ArraySegment <byte> buffer)
        {
            // 여긴 IO스레드에서 호출된다.
            // 완성된 패킷을 메시지큐에 넣어준다.
            Packet msg = new Packet(buffer, user);

            _messageQueue.Enqueue(msg);

            // 로직 스레드를 깨워 일을 시킨다.
            _logicEvent.Set();
        }
Beispiel #2
0
        public void IncomingPacket(bool IsSystem, Session user, Packet packet)
        {
            // 여긴 IO스레드에서 호출된다.
            // 완성된 패킷을 메시지큐에 넣어준다.

            if (IsSystem == false && packet.ProtocolId <= (short)NetworkDefine.SYS_NTF_MAX)
            {
                //TODO: 로그 남기기. 여기서는 로거의 인터페이스만 호출해야 한다. 로거의 구현은 애플리케이션에서 구현한다

                // 시스템만 보내어야할 패킷을 상대방이 보냈음. 해킹 의심
                return;
            }

            MessageQueue.Enqueue(packet);
        }
        public void IncomingPacket(bool IsSystem, Session user, ArraySegment <byte> buffer)
        {
            // 여긴 IO스레드에서 호출된다.
            // 완성된 패킷을 메시지큐에 넣어준다.
            var packet = new Packet(buffer, user);

            if (IsSystem == false && packet.PopProtocolId() <= (short)NetworkDefine.SYS_NTF_MAX)
            {
                //TODO: 로그 남기기 serilog otr nlog(여기에 serilog 사용 가능)
                // Serilogのログイベントからの情報抜き出し方法
                // https://qiita.com/skitoy4321/items/6863dd5c8e8eb7124130
                //ASP.NET Core~SerilogからSeqでロギングしてslackに通知する
                // http://ryuichi111std.hatenablog.com/entry/2016/07/20/111015

                // 시스템만 보내어야할 패킷을 상대방이 보냈음. 해킹 의심
                return;
            }

            MessageQueue.Enqueue(packet);
        }
        public void IncomingPacket(Session user, ArraySegment <byte> buffer)
        {
            Packet msg = new Packet(buffer, user);

            MessageQueue.Enqueue(msg);
        }