/// <summary>
 /// Creates a new <see cref="LiteClientReceiver"/> instance with the given <see cref="ILitePacketProcessor"/>
 /// and a client buffer size.
 /// </summary>
 /// <param name="packetProcessor">Current packet processor used in the client.</param>
 /// <param name="receiveStrategy">The receive strategy type for every received message.</param>
 /// <param name="bufferSize">Buffer size defined in client configuration.</param>
 public LiteClientReceiver(ILitePacketProcessor packetProcessor, ReceiveStrategyType receiveStrategy, int bufferSize)
     : base(packetProcessor, receiveStrategy)
 {
     _buffer                 = new byte[bufferSize];
     _socketEvent            = new SocketAsyncEventArgs();
     _socketEvent.Completed += OnCompleted;
     _socketEvent.SetBuffer(_buffer, 0, _buffer.Length);
 }
        public LitePacketParserTests()
        {
            _packetProcessor = new LitePacketProcessor();
            _buffer          = new List <int>(new[] { 16, 0, 0, 0, 12, 0, 0, 0, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33 }).Select(x => (byte)x).ToArray();
            _bufferHeader    = _buffer.Take(_packetProcessor.HeaderSize).ToArray();
            _bufferContent   = _buffer.Skip(_packetProcessor.HeaderSize).ToArray();
            _messageContent  = Encoding.UTF8.GetString(_bufferContent.Skip(sizeof(int)).ToArray());

            _invalidBuffer = new List <int>(new[] { 255, 255, 255, 255, 12, 0, 0, 0, 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33 }).Select(x => (byte)x).ToArray();
        }
Example #3
0
        /// <summary>
        /// Creates a new <see cref="LiteServer{TUser}"/> instance with a server configuration
        /// and a service provider.
        /// </summary>
        /// <param name="configuration">Server configuration.</param>
        /// <param name="serviceProvider">Service provider to use.</param>
        public LiteServer(LiteServerOptions configuration, IServiceProvider?serviceProvider)
        {
            Options          = configuration;
            _packetProcessor = configuration.PacketProcessor;
            _serviceProvider = serviceProvider !;
            _connectedUsers  = new ConcurrentDictionary <Guid, TUser>();
            _socket          = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            _socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);

            if (serviceProvider is not null)
            {
                _logger = serviceProvider.GetService <ILogger <LiteServer <TUser> > >();
            }

            _acceptor = new LiteServerAcceptor(_socket);
            _acceptor.OnClientAccepted += OnClientAccepted;
            _acceptor.OnError          += OnAcceptorError;

            _receiver = new LiteServerReceiver(_packetProcessor, Options.ReceiveStrategy, Options.ClientBufferSize);
            _receiver.Disconnected += OnDisconnected;
            _receiver.Error        += OnReceiverError;
        }
 public CustomServer(LiteServerConfiguration configuration, ILitePacketProcessor packetProcessor = null, IServiceProvider serviceProvider = null)
     : base(configuration, packetProcessor, serviceProvider)
 {
 }
 /// <summary>
 /// Creates and initializes a new <see cref="LiteServerOptions"/> instance
 /// with a default <see cref="LitePacketProcessor"/>.
 /// </summary>
 public LiteServerOptions()
 {
     PacketProcessor = new LitePacketProcessor();
 }
Example #6
0
 /// <summary>
 /// Creates a new <see cref="LiteReceiver"/> instance with a <see cref="ILitePacketProcessor"/> and a <see cref="ReceiveStrategyType"/>.
 /// </summary>
 /// <param name="packetProcessor">Packet processor to process incoming data and convert it into an exploitable packet stream.</param>
 /// <param name="receiveStrategy">A <see cref="ReceiveStrategyType"/> to use.</param>
 protected LiteReceiver(ILitePacketProcessor packetProcessor, ReceiveStrategyType receiveStrategy)
 {
     _packetProcessor = packetProcessor;
     ReceiveStrategy  = receiveStrategy;
     _packetParser    = new LitePacketParser(_packetProcessor);
 }
 /// <summary>
 /// Creates and initializes a new <see cref="LiteServerBuilderOptions"/> instance
 /// with a default <see cref="LitePacketProcessor"/>.
 /// </summary>
 internal LiteServerBuilderOptions()
 {
     PacketProcessor = new LitePacketProcessor();
 }
 /// <summary>
 /// Creates a new <see cref="LiteServerReceiver"/> instance with the given <see cref="ILitePacketProcessor"/>
 /// and a client buffer size.
 /// </summary>
 /// <param name="packetProcessor">Current packet processor used in the server.</param>
 /// <param name="receiveStrategy">The receive strategy type for every received message.</param>
 /// <param name="clientBufferSize">Client buffer size defined in server configuration.</param>
 public LiteServerReceiver(ILitePacketProcessor packetProcessor, ReceiveStrategyType receiveStrategy, int clientBufferSize)
     : base(packetProcessor, receiveStrategy)
 {
     _readPool         = ObjectPool.Create <SocketAsyncEventArgs>();
     _clientBufferSize = clientBufferSize;
 }
Example #9
0
 /// <summary>
 /// Creates and initializes a new <see cref="LiteClientOptions"/> instance
 /// with a default <see cref="LitePacketProcessor"/>.
 /// </summary>
 public LiteClientOptions()
 {
     PacketProcessor = new LitePacketProcessor();
 }
 public DefaultPacketProcessorTests()
 {
     _faker           = new Faker();
     _packetProcessor = new LitePacketProcessor();
 }
 /// <summary>
 /// Creates a new <see cref="LitePacketParser"/> instance with an <see cref="ILitePacketProcessor"/>.
 /// </summary>
 /// <param name="packetProcessor">Packet processor used to parse the incoming data.</param>
 public LitePacketParser(ILitePacketProcessor packetProcessor)
 {
     _packetProcessor = packetProcessor;
 }
Example #12
0
 /// <summary>
 /// Creates a new <see cref="LiteServer{TUser}"/> instance with a server configuration
 /// and a <see cref="ILitePacketProcessor"/>.
 /// </summary>
 /// <param name="configuration">Server configuration</param>
 /// <param name="packetProcessor">A <see cref="ILitePacketProcessor"/> to use.</param>
 public LiteServer(LiteServerConfiguration configuration, ILitePacketProcessor packetProcessor)
     : this(configuration, packetProcessor, null)
 {
 }