예제 #1
0
        protected RpcTcpClientBase(
            string hostName,
            int port,
            IObjectsPoolsRegistrar poolsRegistrar,
            IDateTimeProvider dateTimeProvider,
            ISerializerFactory serializerFactory,
            ILogger logger,
            ClientParameters parameters)
        {
            HostName = hostName;
            _port    = port;
            if (parameters == null)
            {
                _connectionsPool = new ObjectsPool <TcpClientHolder>(
                    new PooledItemManager <TcpClientHolder>(CreateTcpClient, CloseTcpClient),
                    poolsRegistrar,
                    dateTimeProvider,
                    logger);
            }
            else
            {
                _connectionsPool = new ObjectsPool <TcpClientHolder>(
                    new PooledItemManager <TcpClientHolder>(CreateTcpClient, CloseTcpClient),
                    poolsRegistrar,
                    dateTimeProvider,
                    logger,
                    parameters.ConnectionPoolSize);
            }

            _logger = logger;
            _serviceCallResultSerializer = serializerFactory.CreateSerializer <ServiceCallResult>();
        }
예제 #2
0
 public SslRpcTcpClient(
     string hostName,
     int port,
     IObjectsPoolsRegistrar poolsRegistrar,
     IDateTimeProvider dateTimeProvider,
     ISerializerFactory serializerFactory,
     RemoteCertificateValidationCallback serverCertificateValidationCallback,
     ILogger logger,
     ClientParameters parameters) :
     base(hostName, port, poolsRegistrar, dateTimeProvider, serializerFactory, logger, parameters)
 {
     _serverCertificateValidationCallback = serverCertificateValidationCallback;
 }
 public UnprotectedRpcTcpClient(
     string hostName,
     int port,
     IObjectsPoolsRegistrar poolsRegistrar,
     IDateTimeProvider dateTimeProvider,
     ISerializerFactory serializerFactory,
     ILogger logger,
     ClientParameters parameters) : base(
         hostName,
         port,
         poolsRegistrar,
         dateTimeProvider,
         serializerFactory,
         logger,
         parameters)
 {
 }
예제 #4
0
 public ObjectsPool(
     PooledItemManager <T> itemManager,
     IObjectsPoolsRegistrar poolsRegistrar,
     IDateTimeProvider dateTimeProvider,
     ILogger logger,
     int capacity = DefaultCapacity,
     int gracefulCompletionTimeoutSeconds = DefaultGracefulCompletionTimeoutSeconds) :
     this(
         itemManager,
         poolsRegistrar,
         TimeSpan.FromSeconds(DefaultLifetimeSeconds),
         dateTimeProvider,
         logger,
         capacity,
         gracefulCompletionTimeoutSeconds)
 {
 }
예제 #5
0
        public ObjectsPool(
            PooledItemManager <T> itemManager,
            IObjectsPoolsRegistrar poolsRegistrar,
            TimeSpan lifetime,
            IDateTimeProvider dateTimeProvider,
            ILogger logger,
            int capacity = DefaultCapacity,
            int gracefulCompletionTimeoutSeconds = DefaultGracefulCompletionTimeoutSeconds)
        {
            _itemManager      = itemManager;
            _poolsRegistrar   = poolsRegistrar;
            _lifetime         = lifetime;
            _dateTimeProvider = dateTimeProvider;
            _logger           = logger;
            _capacity         = capacity;
            _gracefulCompletionTimeoutSeconds = gracefulCompletionTimeoutSeconds;
            _semaphore = new SemaphoreSlim(capacity);

            _poolsRegistrar.RegisterPool(this);
        }