protected virtual bool DestroyClientCondition(IPooledRedisClient pooledRedisClient) { return(pooledRedisClient.State == ClientState.Subscription || pooledRedisClient.State == ClientState.Quit || pooledRedisClient.State == ClientState.Disconnect || pooledRedisClient.State == ClientState.FatalError); }
private Exception TryDestroyClient(IPooledRedisClient client) { try { DestroyClient(client); return(null); } catch (Exception ex) { return(ex); } }
internal void ReturnClient(IPooledRedisClient pooledRedisClient) { if (DestroyClientCondition(pooledRedisClient)) { pooledRedisClient.Destroy(); } else if (Disposed) { TryDestroyClient(pooledRedisClient); } else { var pool = _pools.GetOrAdd(pooledRedisClient.ConnectionString, k => new ConcurrentQueue <PoolItem>()); if (PoolIsOversized(pool)) { TryDestroyClient(pooledRedisClient); } else { pool.Enqueue(new PoolItem(pooledRedisClient)); } } }
public PoolItem(IPooledRedisClient client) { Client = client; Timestamp = DateTime.Now; }
protected virtual void DestroyClient(IPooledRedisClient client) { client.QuitAsync().Wait(_destroyTimeout); client.Destroy(); }
private Exception TryDestroyClient(IPooledRedisClient client) { try { DestroyClient(client); return null; } catch (Exception ex) { return ex; } }
protected virtual bool DestroyClientCondition(IPooledRedisClient pooledRedisClient) { return pooledRedisClient.State == ClientState.Subscription || pooledRedisClient.State == ClientState.Quit || pooledRedisClient.State == ClientState.Disconnect || pooledRedisClient.State == ClientState.FatalError; }
internal void ReturnClient(IPooledRedisClient pooledRedisClient) { if (DestroyClientCondition(pooledRedisClient)) { pooledRedisClient.Destroy(); } else if (Disposed) { TryDestroyClient(pooledRedisClient); } else { var pool = _pools.GetOrAdd(pooledRedisClient.ConnectionString, k => new ConcurrentQueue<PoolItem>()); if (PoolIsOversized(pool)) TryDestroyClient(pooledRedisClient); else pool.Enqueue(new PoolItem(pooledRedisClient)); } }