private ReplicaSetPool <IThriftConnection, string, IPEndPoint> CreateFierceConnectionPool(ICassandraClusterSettings settings)
        {
            var result = ReplicaSetPool.Create <IThriftConnection, string, IPEndPoint>(
                new[] { settings.EndpointForFierceCommands },
                (key, replicaKey) => CreateFiercePool(settings, replicaKey, key),
                c => ((ThriftConnectionInPoolWrapper)c).ReplicaKey,
                c => ((ThriftConnectionInPoolWrapper)c).KeyspaceName,
                settings.ConnectionIdleTimeout,
                PoolSettings.CreateDefault(),
                logger);

            return(result);
        }
        private ReplicaSetPool <IThriftConnection, string, IPEndPoint> CreateDataConnectionPool(ICassandraClusterSettings settings)
        {
            var replicaSetPool = ReplicaSetPool.Create <IThriftConnection, string, IPEndPoint>(
                settings.Endpoints,
                (key, replicaKey) => GetDataConnectionPool(settings, replicaKey, key),
                c => ((ThriftConnectionInPoolWrapper)c).ReplicaKey,
                c => ((ThriftConnectionInPoolWrapper)c).KeyspaceName,
                settings.ConnectionIdleTimeout,
                PoolSettings.CreateDefault(),
                logger);

            return(replicaSetPool);
        }
Esempio n. 3
0
 private static ReplicaSetPool <TItem, TItemKey, TReplicaKey> CreatePool <TItem, TItemKey, TReplicaKey>(
     TReplicaKey[] replicas,
     Func <TItemKey, TReplicaKey, Pool <TItem> > poolFactory
     )
     where TItem : class, IDisposable, IPoolKeyContainer <TItemKey, TReplicaKey>, ILiveness
     where TItemKey : IEquatable <TItemKey>
     where TReplicaKey : IEquatable <TReplicaKey>
 {
     return(new ReplicaSetPool <TItem, TItemKey, TReplicaKey>(replicas, poolFactory, EqualityComparer <TReplicaKey> .Default, EqualityComparer <TItemKey> .Default, i => i.ReplicaKey, i => i.PoolKey, PoolSettings.CreateDefault(), new SilentLog(), null));
 }
Esempio n. 4
0
        public void TestRemoveUnusedConnection()
        {
            using (var pool = ReplicaSetPool.Create <Item, ItemKey, ReplicaKey>(new[] { new ReplicaKey("replica1") }, (x, z) => new Pool <Item>(y => new Item(x, z), new SilentLog()), PoolSettings.CreateDefault(), TimeSpan.FromMilliseconds(100), new SilentLog()))
            {
                var item1 = pool.Acquire(null);
                var item2 = pool.Acquire(null);
                pool.Release(item1);

                Thread.Sleep(500);

                pool.Release(item2);

                var item3 = pool.Acquire(null);
                var item4 = pool.Acquire(null);

                Assert.That(item3, Is.EqualTo(item2));
                Assert.That(item4, Is.Not.EqualTo(item1) & Is.Not.EqualTo(item2));
            }
        }