public ModifiableProtocol(IPacketEncryptor encryptor=null, IPacketDecryptor decryptor=null, IPacketEncoder encoder=null, IPacketDecoder decoder=null)
 {
     _encryptor = encryptor;
     _decryptor = decryptor;
     _encoder = encoder;
     _decoder = decoder;
 }
示例#2
0
        public OutgoingServerChannel(
            NetworkTransportConfig config,
            ServerUdpPacketTransport transport,
            IPacketEncryptor packetEncryption,
            ILogger logger)
        {
            this._config           = config ?? throw new ArgumentNullException(nameof(config));
            this._transport        = transport ?? throw new ArgumentNullException(nameof(transport));
            this._packetEncryption = packetEncryption ?? throw new ArgumentNullException(nameof(packetEncryption));
            this._logger           = logger ?? throw new ArgumentNullException(nameof(logger));

            this._clientEntitiesToRemove = new AppendOnlyList <Entity>(64);
        }
示例#3
0
        public ClientUdpPacketTransport(
            ILogger logger,
            IPacketEncryptor packetEncryption,
            NetworkTransportConfig transportConfig,
            IPEndPoint remoteEndPoint)
        {
            this._packetEncryption = packetEncryption ?? throw new ArgumentNullException(nameof(packetEncryption));
            this._remoteEndPoint   = remoteEndPoint;

            this._receiveBuffer = new ReceiveBuffer(transportConfig.MaxPacketSize, transportConfig.ReceivePacketQueueCapacity);
            this._socket        = new ClientUdpSocket(logger, this._receiveBuffer);

            this._packetSerializationBytePool = new ByteArrayPool(transportConfig.MaxPacketSize, transportConfig.SendPacketQueueCapacity);
        }
示例#4
0
        public IncomingServerChannel(
            ServerUdpPacketTransport transport,
            IPacketEncryptor packetEncryption,
            ControlPlaneServerController controlPacketController,
            SimulationServerController simulationPacketController,
            ILogger logger)
        {
            this._isRunning = false;

            this._transport                  = transport ?? throw new ArgumentNullException(nameof(transport));
            this._packetEncryption           = packetEncryption ?? throw new ArgumentNullException(nameof(packetEncryption));
            this._controlPacketController    = controlPacketController ?? throw new ArgumentNullException(nameof(controlPacketController));
            this._simulationPacketController = simulationPacketController ?? throw new ArgumentNullException(nameof(simulationPacketController));
            this._logger = logger ?? throw new ArgumentNullException(nameof(logger));
        }
示例#5
0
        public ServerUdpPacketTransport(
            ILogger logger,
            IPacketEncryptor packetEncryption,
            NetworkTransportConfig transportConfig,
            UdpServerConfig udpServerConfig)
        {
            this._logger           = logger ?? throw new ArgumentNullException(nameof(logger));
            this._packetEncryption = packetEncryption ?? throw new ArgumentNullException(nameof(packetEncryption));
            this._endPoint         = udpServerConfig.HostIpEndPoint;

            this._receiveBuffer = new ReceiveBuffer(transportConfig.MaxPacketSize, transportConfig.ReceivePacketQueueCapacity);
            this._udpSocket     = new ServerUdpSocket(logger, this._receiveBuffer);

            this._packetSerializationBytePool = new ByteArrayPool(transportConfig.MaxPacketSize, transportConfig.SendPacketQueueCapacity);
        }
示例#6
0
        public int Serialize(Stream stream, IPacketEncryptor packetEncryption)
        {
            int size = stream.PacketWriteByte((byte)this.Type);

            size += stream.PacketWriteInt(this.PlayerId);

            switch (this.Type)
            {
            case ClientPacketType.PlayerInput:
                return(size + this.PlayerInputPacket.Serialize(stream));

            case ClientPacketType.ControlPlane:
                return(size + this.ControlPacket.Serialize(stream));
            }

            return(-1);
        }
示例#7
0
        public int Serialize(Stream stream, IPacketEncryptor packetEncryption)
        {
            int size = stream.PacketWriteByte((byte)this.Type);

            size += stream.PacketWriteInt(this.PlayerId);

            switch (this.Type)
            {
            case ServerPacketType.Replication:
                return(size + this.ReplicationPacket.Serialize(stream));

            case ServerPacketType.Control:
                return(size + this.ControlPacket.Serialize(stream));
            }

            return(-1);
        }
示例#8
0
        public bool Deserialize(Stream stream, IPacketEncryptor packetEncryption)
        {
            byte typeAsByte;

            stream.PacketReadByte(out typeAsByte);
            this.Type = (ClientPacketType)typeAsByte;
            int playerId;

            stream.PacketReadInt(out playerId);
            this.PlayerId = new PlayerId(playerId);

            switch (this.Type)
            {
            case ClientPacketType.PlayerInput:
                return(this.PlayerInputPacket.Deserialize(stream));

            case ClientPacketType.ControlPlane:
                return(this.ControlPacket.Deserialize(stream));
            }

            return(false);
        }
示例#9
0
        public bool Deserialize(Stream stream, IPacketEncryptor packetEncryption)
        {
            byte typeAsByte;

            stream.PacketReadByte(out typeAsByte);
            this.Type = (ServerPacketType)typeAsByte;
            int playerId;

            stream.PacketReadInt(out playerId);
            this.PlayerId = new PlayerId(playerId);

            switch (this.Type)
            {
            case ServerPacketType.Replication:
                return(this.ReplicationPacket.Deserialize(stream));

            case ServerPacketType.Control:
                return(this.ControlPacket.Deserialize(stream));
            }

            return(false);
        }
示例#10
0
 public IPacketEncryptor SetEncryptor(IPacketEncryptor encryptor)
 {
     _encryptor = encryptor;
     return _encryptor;
 }