/// <nodoc/> public NonMultiplexingServer([CanBeNull] string name, IServerConfig config, IConnectivityProvider <TClient> connectivityProvider) { Contract.Requires(config != null); Contract.Requires(connectivityProvider != null); Name = name ?? GetType().Name; m_connectivityProvider = connectivityProvider; m_clientListener = new GenericServer <TClient>( name: Name, config: config, listener: connectivityProvider.AcceptClientAsync); }
/// <nodoc/> public MultiplexingServer([CanBeNull] string name, [CanBeNull] ILogger logger, IConnectivityProvider <TClient> connectivityProvider, int maxConcurrentClients, int maxConcurrentRequestsPerClient) { Contract.Requires(connectivityProvider != null); Contract.Requires(maxConcurrentClients > 0); Contract.Requires(maxConcurrentRequestsPerClient > 0); Name = name ?? GetType().Name; Logger = logger ?? VoidLogger.Instance; m_connectivityProvider = connectivityProvider; m_clientHandlingConfig = new ServerConfig { Logger = Logger, MaxConcurrentClients = maxConcurrentClients }; m_requestHandlingConfig = new ServerConfig { Logger = Logger, MaxConcurrentClients = maxConcurrentRequestsPerClient }; m_clientListener = new GenericServer <TClient>( name: Name + ".ClientHandler", config: m_clientHandlingConfig, listener: (token) => connectivityProvider.AcceptClientAsync(token)); }