#ifndef _RedisConnectionPool_h_ #define _RedisConnectionPool_h_ #include "hiredis/hiredis.h" #include "AmThread.h" #include #include #include using std::string; using std::list; using std::vector; class RedisConnectionPool : public AmThread { list connections; unsigned int total_connections; unsigned int failed_connections; AmMutex connections_mut; AmCondition have_active_connection; AmCondition try_connect; vector retry_timers; unsigned int retry_index; string redis_server; unsigned int redis_port; unsigned int max_wait; public: RedisConnectionPool(); ~RedisConnectionPool(); redisContext* getActiveConnection(); void returnConnection(redisContext* c); void returnFailedConnection(redisContext* c); void set_config(string& server, unsigned int port, vector timers, unsigned int max_conn_wait); void add_connections(unsigned int count); void run(); void on_stop(); }; #endif