#ifndef POOL_H
#define POOL_H
#include <libcouchbase/couchbase.h>
#include <libcouchbase/api3.h>
#include <pthread.h>
#include <queue>
#include <vector>
namespace lcb {
class Pool {
public:
Pool(const lcb_create_st& options, size_t items = 10);
virtual ~Pool();
lcb_t pop();
void push(lcb_t instance);
lcb_error_t connect();
protected:
virtual void initialize(lcb_t instance) = 0;
private:
pthread_mutex_t mutex;
pthread_cond_t cond;
std::queue<lcb_t> instances;
std::vector<lcb_t> all_instances;
size_t initial_size;
};
}
#endif