/// <summary> /// Creates a new <see cref="LiteServer{TUser}"/> instance with a server configuration, /// packet processor and a service provider. /// </summary> /// <param name="configuration">Server configuration.</param> /// <param name="packetProcessor">Packet processor to use.</param> /// <param name="serviceProvider">Service provider to use.</param> public LiteServer(LiteServerConfiguration configuration, ILitePacketProcessor packetProcessor, IServiceProvider?serviceProvider) { Configuration = configuration; _packetProcessor = 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, Configuration.ReceiveStrategy, Configuration.ClientBufferSize); _receiver.Disconnected += OnDisconnected; _receiver.Error += OnReceiverError; }
/// <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) { }
/// <summary> /// Creates a new <see cref="LiteServer{TUser}"/> instance with a server configuration, /// an <see cref="IServiceProvider"/> and a default <see cref="LitePacketProcessor"/>. /// </summary> /// <param name="configuration">Server configuration.</param> /// <param name="serviceProvider">Service provider to use.</param> public LiteServer(LiteServerConfiguration configuration, IServiceProvider serviceProvider) : this(configuration, new LitePacketProcessor(), serviceProvider) { }
/// <summary> /// Creates a new <see cref="LiteServer{TUser}"/> instance with a server configuration /// and a default <see cref="ILitePacketProcessor"/>. /// </summary> /// <param name="configuration">Server configuration</param> public LiteServer(LiteServerConfiguration configuration) : this(configuration, new LitePacketProcessor()) { }