示例#1
0
        /// <summary>
        /// Constructor, initializes required objects and subscribes to events of the server.
        /// </summary>
        public CinaRATServer() : base()
        {
            base.Serializer = new Serializer(PacketRegistery.GetPacketTypes());

            base.ClientState += OnClientState;
            base.ClientRead  += OnClientRead;
        }
示例#2
0
        public void AreAllPacketsRegistered()
        {
            var asm = Assembly.Load("Quasar");
            var expectedPacketTypes = asm.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IPacket)) && t.GetCustomAttributes(typeof(SerializableAttribute), false).Any()).ToArray();
            var registeredPackets   = PacketRegistery.GetPacketTypes();

            CollectionAssert.AreEquivalent(expectedPacketTypes, registeredPackets);
        }
示例#3
0
 private void ConnectionHandeler_packetArrival(ServerIncomingPacket packet)
 {
     PacketRegistery <ServerOpCode, ServerIncomingPacket> .handlePacket handeler = packetRegister.getHandeler(packet.Opcode);
     if (handeler != null)
     {
         handeler.Invoke(packet);
     }
 }
示例#4
0
        public QuasarClient(HostsManager hostsManager) : base()
        {
            this._hosts = hostsManager;

            base.Serializer   = new Serializer(PacketRegistery.GetPacketTypes());
            base.ClientState += OnClientState;
            base.ClientRead  += OnClientRead;
            base.ClientFail  += OnClientFail;
        }
示例#5
0
        public ConnectionHandeler(ConnectionManager.ConnectionInformation connection)
        {
            this.connection     = connection;
            this.packetRegister = new PacketRegistery <ServerOpCode, ServerIncomingPacket>();

            packetRegister.registerPacket(ServerOpCode.Core_client_sends_version, ServerReceivedVersion);
            connection.sendData(new SharedPacketLib.DataPackets.ServerOutgoingPacket(ClientOpCode.Core_send_version));
            this.connection.connectionChanged += connection_connectionChanged;
            (this.connection.parser as GamePacketParser).packetArrival += ConnectionHandeler_packetArrival;
        }
示例#6
0
        public ConnectionHandeler(ConnectionManager.ConnectionInformation connection)
        {
            this.connection = connection;
            this.packetRegister = new PacketRegistery<ServerOpCode, ServerIncomingPacket>();

            packetRegister.registerPacket(ServerOpCode.Core_client_sends_version, ServerReceivedVersion);
            connection.sendData(new SharedPacketLib.DataPackets.ServerOutgoingPacket(ClientOpCode.Core_send_version));
            this.connection.connectionChanged += connection_connectionChanged;
            (this.connection.parser as GamePacketParser).packetArrival += ConnectionHandeler_packetArrival;
        }
示例#7
0
 /// <summary>
 /// registers a packet
 /// </summary>
 /// <param name="opCode">Server opcode</param>
 /// <param name="handeler">Handeler</param>
 public void registerPacket(ClientOpCode opCode, PacketRegistery<ClientOpCode, ClientIncomingPacket>.handlePacket handeler, bool handleImmidiate = false)
 {
     if (handleImmidiate)
     {
         immidiateHandeler.registerPacket(opCode, handeler);
     }
     else {
         this.queueHandeler.registerPacket(opCode, handeler);
     }
 }
 /// <summary>
 /// Adds or replaces a packet handeler
 /// </summary>
 /// <param name="code">The Client code</param>
 /// <param name="packetFunction">The packet function which can handle a packet</param>
 public void registerPacket(ClientOpCode code, PacketRegistery<ClientOpCode, ClientIncomingPacket>.handlePacket packetFunction, bool handleImmidiate = false)
 {
     this.processor.registerPacket(code, packetFunction, handleImmidiate);
 }
示例#9
0
 /// <summary>
 /// Creates a new packet processor
 /// </summary>
 public PacketProcessor()
 {
     this.immidiateHandeler = new PacketRegistery<ClientOpCode, ClientIncomingPacket>();
     this.queueHandeler = new PacketRegistery<ClientOpCode, ClientIncomingPacket>();
     packetQueue = new Queue();
 }