protected PacketHandlingTests()
        {
            var clientMock = new Mock <Client>();

            Moonlight = new MoonlightAPI(new AppConfig
            {
                Database = "../../database.db"
            });

            SkillFactory  = Moonlight.Services.GetService <ISkillFactory>();
            EntityFactory = Moonlight.Services.GetService <IEntityFactory>();
            MapFactory    = Moonlight.Services.GetService <IMapFactory>();

            IPacketHandlerManager _packetHandlerManager = Moonlight.Services.GetService <IPacketHandlerManager>();

            clientMock.Setup(x => x.SendPacket(It.IsAny <string>())).Callback <string>(x => _packetHandlerManager.Handle(clientMock.Object, x));
            clientMock.Setup(x => x.ReceivePacket(It.IsAny <string>())).Callback <string>(x => _packetHandlerManager.Handle(clientMock.Object, x));

            Client           = clientMock.Object;
            Client.Character = Character = new Character(new SerilogLogger(), 999, "Moonlight", Client);

            Map map = MapFactory.CreateMap(1);

            map.AddEntity(Client.Character);
        }
Example #2
0
        public WebSocketConnector(IPacketFormat packetFormat, IPacketHandlerManager packetHandlerManager) : base(packetFormat, packetHandlerManager)
        {
            mSocket              = null;
            mNetStream           = new NetStream(INetConnector.MAX_SOCKET_BUFFER_SIZE * 2);
            tempReadPacketLength = 0;
            tempReadPacketType   = 0;
            tempReadPacketData   = null;

            mSendThread = new AsyncThread(SendLogic);
            mSendThread.Start();
        }
Example #3
0
        public INetConnector(IPacketFormat packetFormat, IPacketHandlerManager packetHandlerManager)
        {
            mUid = -1;
            mRemoteHost = null;
            OnConnected = null;
            OnRecieved = null;
            OnDisconnected = null;
            OnError = null;

            mPacketFormat = packetFormat;
            mPacketHandlerManager = packetHandlerManager;
        }
Example #4
0
        public WebSocketConnector(IPacketFormat packetFormat, IPacketHandlerManager packetHandlerManager)
            : base(packetFormat, packetHandlerManager)
        {
            mSocket = null;
            mNetStream = new NetStream(INetConnector.MAX_SOCKET_BUFFER_SIZE * 2);
            tempReadPacketLength = 0;
            tempReadPacketType = 0;
            tempReadPacketData = null;

            mSendThread = new AsyncThread(SendLogic);
            mSendThread.Start();
        }
Example #5
0
        private bool mDisconnectEvent;         // 断开消息,必须要在主线程中处理

        public INetConnector(IPacketFormat packetFormat, IPacketHandlerManager packetHandlerManager)
        {
            mUid           = -1;
            mRemoteHost    = null;
            OnConnected    = null;
            OnRecieved     = null;
            OnDisconnected = null;
            OnError        = null;

            mPacketFormat         = packetFormat;
            mPacketHandlerManager = packetHandlerManager;

            mDisconnectEvent = false;
        }
Example #6
0
        public UDPConnector(IPacketFormat packetFormat, IPacketHandlerManager packetHandlerManager) : base(packetFormat, packetHandlerManager)
        {
            mSocket              = null;
            mRemoteEndPoint      = null;
            mNetStream           = new NetStream(INetConnector.MAX_SOCKET_BUFFER_SIZE * 2);
            tempReadPacketLength = 0;
            tempReadPacketType   = 0;
            tempReadPacketData   = null;

            mReadCompleteCallback = new AsyncCallback(ReadComplete);
            mSendCompleteCallback = new AsyncCallback(SendComplete);

            mSendThread = new AsyncThread(SendLogic);
            mSendThread.Start();
        }
Example #7
0
        public void InitServer(ushort port, string blowfishKey, IGame game, NetworkHandler <ICoreRequest> netReq, NetworkHandler <ICoreResponse> netResp)
        {
            _game   = game;
            _server = new Host();
            _server.Create(new Address(_serverHost, port), 32, 32, 0, 0);

            var key = Convert.FromBase64String(blowfishKey);

            if (key.Length <= 0)
            {
                throw new InvalidKeyException("Invalid blowfish key supplied");
            }

            Blowfish             = new BlowFish(key);
            PacketHandlerManager = new PacketHandlerManager(Blowfish, _server, game, netReq, netResp);
        }
Example #8
0
        public void InitServer(string host, ushort port, Dictionary <ulong, string> blowfishKeys, IGame game, NetworkHandler <ICoreRequest> netReq, NetworkHandler <ICoreResponse> netResp)
        {
            _game   = game;
            _server = new Host();
            Address addr = new Address();

            addr.Port = port;
            // addr.SetHost("192.168.0.100"); // Laptop Ethernet IP
            addr.SetHost(host);
            _server.Create(addr, 32, 32, 0, 0);
            Dictionary <ulong, BlowFish> blowfishes = new Dictionary <ulong, BlowFish>();

            foreach (var rawKey in blowfishKeys)
            {
                var key = Convert.FromBase64String(rawKey.Value);
                if (key.Length <= 0)
                {
                    throw new InvalidKeyException($"Invalid blowfish key supplied ({key})");
                }
                blowfishes.Add(rawKey.Key, new BlowFish(key));
            }

            PacketHandlerManager = new PacketHandlerManager(blowfishes, _server, game, netReq, netResp);
        }
Example #9
0
 public PacketNotifier(IPacketHandlerManager packetHandlerManager, INavGrid navGrid)
 {
     _packetHandlerManager = packetHandlerManager;
     _navGrid = navGrid;
 }
Example #10
0
        public void RegisterConnector(int uid, ConnectionType type, IPacketFormat pf, IPacketHandlerManager phm, Callback <bool> connected, Callback <int, Byte[]> recieved, Callback disconnected, Callback error)
        {
            INetConnector ctor = null;

            switch (type)
            {
            case ConnectionType.TCP: ctor = new TCPConnector(pf, phm); break;

            case ConnectionType.UDP: ctor = new UDPConnector(pf, phm); break;

            case ConnectionType.WEBSOCKET: ctor = new WebSocketConnector(pf, phm); break;

            default: ctor = new TCPConnector(pf, phm); break;
            }

            ctor.OnConnected    = connected;
            ctor.OnRecieved     = recieved;
            ctor.OnDisconnected = disconnected;
            ctor.OnError        = error;
            ctor.SetUid(uid);

            mConnectorMap.Add(uid, ctor);
        }
Example #11
0
 public ClientManager(IPacketHandlerManager packetHandlerManager) => PacketHandlerManager = packetHandlerManager;