91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 12KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-05-17
  • 語言: C/C++
  • 標(biāo)簽: mongodb??

資源簡介

該代碼是C++ MongoDB的連接池代碼實(shí)現(xiàn)。代碼封裝了一個連接池類對象,通過該對象提供的連接池來操作MongoDB,提升了性能,減少了數(shù)據(jù)庫連接資源的開銷。

資源截圖

代碼片段和文件信息

//函數(shù)返回0:成功?>0?出錯
class?cmongo{
????public:
????????//默認(rèn)構(gòu)造函數(shù),默認(rèn)連接數(shù)為1
????????cmongo();
????????//傳入連接數(shù)到構(gòu)造函數(shù),默認(rèn)連接數(shù)為size
????????cmongo(int?size);
????????//析構(gòu)函數(shù)
????????~cmongo();
????public:
????????//設(shè)置tcp讀寫超時(shí)時(shí)間
????????int?set_wr_timeout(double?t);
????????//連接
????????int?conn(string?mhost=“127.0.0.1“int?mport=27017);
????????//設(shè)置db?collection
????????int?setdb(string?mdbstring?mcollection);

????????int?setindex(string?key);
????????//查詢
????????int?get(map&?outvector?instring?keystring?key_val);
????????//投遞一批要查詢的字段,fields為要查詢哪些字段
????????int?gets(map?>&?routvector?fieldsvector?instring?key);
????????//dump?key-value?dumpkey對應(yīng)一個value
????????int?dumpkey(map&?routstring?keystring?val);
????????//dump?key->map?dumpkey對應(yīng)一組value
????????int?dumpvals(map?>&?routvector?instring?key);
????????//寫入
????????int?set(map?instring?keystring?key_val);
????????//批量寫入
????????//更新接口,批量更新key=“id“
????????//??“123456“:
????????//??“123457“:
????????int?sets(map?>?instring?key);
????????//刪除
????????int?remove(string?keystring?key_val);
????private:
????????string?doc;
????????//tcp讀寫超時(shí)時(shí)間
????????double?wr_timeout;
????????pthread_mutex_t?_jobmux;
????????sem_t?_jobsem;
????????map?_joblst;
????????pthread_mutex_t?_dbmux;

};

cmongo::cmongo(int?size){
????//doc
????doc=string(DB_DB)+“.“+string(DB_COLLECTION);
????wr_timeout=3;
????//最大連接0-200
????if(size<0){
????????size=1;
????}
????if(size>200){
????????size=200;
????}
????if(_joblst.size()>0){
????????return;
????}
????bool?auto_conn=true;
????pthread_mutex_init(&_jobmuxNULL);
????if((sem_init(&_jobsem00))<0){
????????return;
????}
????pthread_mutex_lock(&_jobmux);
????for(int?i=0;i????????DBClientConnection*?pconn?=?new?DBClientConnection(auto_conn0wr_timeout);
????????if(pconn?!=?NULL){
????????????_joblst[pconn]=false;
????????}
????}
????pthread_mutex_unlock(&_jobmux);

}
cmongo::~cmongo(){
????doc=““;
????pthread_mutex_lock(&_jobmux);
????map::iterator?it=_joblst.begin();
????while(it?!=?_joblst.end()){
????????delete?it->first;
????????it++;
????}
????pthread_mutex_unlock(&_jobmux);
}
int?cmongo::set_wr_timeout(double?t){
????wr_timeout=t;
????return?RET_OK;
}
int?cmongo::conn(string?mhostint?mport){
????pthread_mutex_lock(&_jobmux);
????map::iterator?it=_joblst.begin();
????while(it!=_joblst.end()){
????????string?errmsg=““;
????????HostAndPort?hp(mhostmport);
????????if(!(it->first->connect(hperrmsg))){
????????????cerr<<“connect?mhost:“<????????????it->second=true;
????????}
????????sem_post(&_jobsem);
????????it++;
????}
??

評論

共有 條評論