public Task <Tuple <bool, TResult> > Consume <TResult>(Func <IRiakConnection, Task <TResult> > consumer)
        {
            if (_disposing)
            {
                return(TaskResult(Tuple.Create(false, default(TResult))));
            }

            // connection on the fly
            var conn = _connFactory.CreateConnection(_nodeConfig);

            return(consumer(conn).ContinueWith((Task <TResult> finishedTask) => {
                if (conn != null)
                {
                    conn.Dispose();
                }

                if (!finishedTask.IsFaulted)
                {
                    return Tuple.Create(true, finishedTask.Result);
                }
                else
                {
                    return Tuple.Create(false, default(TResult));
                }
            }));
        }
Exemple #2
0
        public Tuple <bool, TResult> Consume <TResult>(Func <IRiakConnection, TResult> consumer)
        {
            if (disposing)
            {
                return(Tuple.Create(false, default(TResult)));
            }

            using (var conn = connFactory.CreateConnection(nodeConfig, authConfig))
            {
                try
                {
                    var result = consumer(conn);
                    return(Tuple.Create(true, result));
                }
                catch (Exception)
                {
                    return(Tuple.Create(false, default(TResult)));
                }
            }
        }
        public RiakConnectionPool(IRiakNodeConfiguration nodeConfig, IRiakConnectionFactory connFactory)
        {
            var poolSize = nodeConfig.PoolSize;

            _allResources = new List <IRiakConnection>();
            _resources    = new ConcurrentStack <IRiakConnection>();

            for (var i = 0; i < poolSize; ++i)
            {
                var conn = connFactory.CreateConnection(nodeConfig);
                _allResources.Add(conn);
                _resources.Push(conn);
            }
        }
Exemple #4
0
        public RiakConnectionPool(
            IRiakNodeConfiguration nodeConfig,
            IRiakAuthenticationConfiguration authConfig,
            IRiakConnectionFactory connFactory)
        {
            int poolSize = nodeConfig.PoolSize;

            for (var i = 0; i < poolSize; ++i)
            {
                var conn = connFactory.CreateConnection(nodeConfig, authConfig);
                allResources.Add(conn);
                resources.Push(conn);
            }
        }