本文整理汇总了C++中ZPack类的典型用法代码示例。如果您正苦于以下问题:C++ ZPack类的具体用法?C++ ZPack怎么用?C++ ZPack使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ZPack类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: lookup_shared
string HTWorker::lookup_shared(const ZPack &zpack) {
string result;
if (zpack.key().empty())
return Const::ZSC_REC_EMPTYKEY; //-1
string key = zpack.key();
string *ret = PMAP->get(key);
if (ret == NULL) {
printf("thread[%lu] DB Error: lookup found nothing\n", pthread_self());
fflush(stdout);
result = Const::ZSC_REC_NONEXISTKEY;
result.append("Empty");
} else {
result = Const::ZSC_REC_SUCC;
result.append(*ret);
}
return result;
}
开发者ID:fakeyee,项目名称:ZHT,代码行数:25,代码来源:HTWorker.cpp
示例2: remove_shared
string HTWorker::remove_shared(const ZPack &zpack) {
string result;
if (zpack.key().empty())
return Const::ZSC_REC_EMPTYKEY; //-1
string key = zpack.key();
int ret = PMAP->remove(key);
if (ret != 0) {
printf("thread[%lu] DB Error: fail to remove, rcode = %d\n",
pthread_self(), ret);
fflush(stdout);
result = Const::ZSC_REC_NONEXISTKEY; //-92
} else {
if (_instant_swap) {
PMAP->writeFileFG();
}
result = Const::ZSC_REC_SUCC; //0, succeed.
}
return result;
}
开发者ID:fakeyee,项目名称:ZHT,代码行数:28,代码来源:HTWorker.cpp
示例3: append_shared
string HTWorker::append_shared(const ZPack &zpack) {
string result;
if (zpack.key().empty())
return Const::ZSC_REC_EMPTYKEY; //-1
string key = zpack.key();
int ret = PMAP->append(key, zpack.SerializeAsString());
if (ret != 0) {
printf("thread[%lu] DB Error: fail to append, rcode = %d\n",
pthread_self(), ret);
fflush(stdout);
result = Const::ZSC_REC_NONEXISTKEY; //-92
} else {
if (_instant_swap) {
PMAP->writeFile();
//PMAP->flushDbfile();
}
result = Const::ZSC_REC_SUCC; //0, succeed.
}
return result;
}
开发者ID:fkengun,项目名称:OHT,代码行数:29,代码来源:HTWorker.cpp
示例4: run
string HTWorker::run(const char *buf) {
string result;
ZPack zpack;
string str(buf);
zpack.ParseFromString(str);
if (zpack.opcode() == Const::ZSC_OPC_LOOKUP) {
result = lookup(zpack);
} else if (zpack.opcode() == Const::ZSC_OPC_INSERT) {
result = insert(zpack);
} else if (zpack.opcode() == Const::ZSC_OPC_APPEND) {
result = append(zpack);
} else if (zpack.opcode() == Const::ZSC_OPC_CMPSWP) {
result = compare_swap(zpack);
} else if (zpack.opcode() == Const::ZSC_OPC_REMOVE) {
result = remove(zpack);
} else if (zpack.opcode() == Const::ZSC_OPC_STCHGCB) {
result = state_change_callback(zpack);
} else {
result = Const::ZSC_REC_UOPC;
}
return result;
}
开发者ID:fakeyee,项目名称:ZHT,代码行数:33,代码来源:HTWorker.cpp
示例5: printf
string HTWorker::state_change_callback_internal(const ZPack &zpack) {
string result;
if (zpack.key().empty())
return Const::ZSC_REC_EMPTYKEY; //-1
string key = zpack.key();
string *ret = PMAP->get(key);
if (ret == NULL) {
printf("thread[%lu] DB Error: lookup found nothing\n", pthread_self());
fflush(stdout);
result = Const::ZSC_REC_NONEXISTKEY;
} else {
ZPack rltpack;
rltpack.ParseFromString(*ret);
if (zpack.val() == rltpack.val()) {
result = Const::ZSC_REC_SUCC; //0, succeed.
} else {
result = Const::ZSC_REC_SCCBPOLLTRY;
}
}
return result;
}
开发者ID:fakeyee,项目名称:ZHT,代码行数:32,代码来源:HTWorker.cpp
示例6: str_to_zpack
string ZHTClient::extract_value(const string &returnStr) {
string val;
//StrTokenizer strtok(returnStr, ":");
//StrTokenizer strtok(returnStr, ";");
/*
* hello,zht:hello,ZHT ==> zht:ZHT
* */
// if (strtok.has_more_tokens()) {
//
// while (strtok.has_more_tokens()) {
//
// ZPack zpack;
// zpack.ParseFromString(strtok.next_token());
//
// if (zpack.valnull())
// val.append("");
// else
// val.append(zpack.val());
//
// val.append(":");
// }
//
// size_t found = val.find_last_of(":");
// val = val.substr(0, found);
//
// } else {
ZPack zpack = str_to_zpack(returnStr);
//zpack.ParseFromString(returnStr);
if (zpack.valnull())
val = "";
else
val = zpack.val();
//}
return val;
}
开发者ID:aalayach,项目名称:zebra,代码行数:40,代码来源:cpp_zhtclient.cpp
示例7: compare_swap
string HTWorker::compare_swap(const ZPack &zpack) {
if (zpack.key().empty())
return Const::ZSC_REC_EMPTYKEY; //-1
string result = compare_swap_internal(zpack);
string lkpresult = lookup_shared(zpack);
result.append(erase_status_code(lkpresult));
#ifdef SCCB
_stub->sendBack(_addr, result.data(), result.size());
return "";
#else
return result;
#endif
}
开发者ID:fakeyee,项目名称:ZHT,代码行数:18,代码来源:HTWorker.cpp
示例8: commonOpInternal
string ZHTClient::commonOpInternal(const string &opcode, const string &key,
const string &val, const string &val2, string &result, int lease) {
ZPack zpack;
zpack.set_opcode(opcode); //"001": lookup, "002": remove, "003": insert, "004": append, "005", compare_swap
zpack.set_replicanum(3);
if (key.empty())
return Const::ZSC_REC_EMPTYKEY; //-1, empty key not allowed.
else
zpack.set_key(key);
if (val.empty()) {
zpack.set_val("^"); //coup, to fix ridiculous bug of protobuf! //to debug
zpack.set_valnull(true);
} else {
zpack.set_val(val);
zpack.set_valnull(false);
}
if (val2.empty()) {
zpack.set_newval("?"); //coup, to fix ridiculous bug of protobuf! //to debug
zpack.set_newvalnull(true);
} else {
zpack.set_newval(val2);
zpack.set_newvalnull(false);
}
zpack.set_lease(Const::toString(lease));
string msg = zpack.SerializeAsString();
/*ZPack tmp;
tmp.ParseFromString(msg);
printf("{%s}:{%s,%s}\n", tmp.key().c_str(), tmp.val().c_str(),
tmp.newval().c_str());*/
char *buf = (char*) calloc(_msg_maxsize, sizeof(char));
size_t msz = _msg_maxsize;
/*send to and receive from*/
_proxy->sendrecv(msg.c_str(), msg.size(), buf, msz);
/*...parse status and result*/
string sstatus;
string srecv(buf);
if (srecv.empty()) {
sstatus = Const::ZSC_REC_SRVEXP;
} else {
result = srecv.substr(3); //the left, if any, is lookup result or second-try zpack
sstatus = srecv.substr(0, 3); //status returned, the first three chars, like 001, -98...
}
free(buf);
return sstatus;
}
开发者ID:Hellblazer,项目名称:ZHT,代码行数:64,代码来源:cpp_zhtclient.cpp
示例9: commonOpInternal
string ZHTClient::commonOpInternal(const string &opcode, const string &key,
const string &val, const string &val2, string &result, int lease) {
ZPack zpack;
zpack.set_opcode(opcode); //"001": lookup, "002": remove, "003": insert, "004": append, "005", compare_swap
zpack.set_replicanum(3);
//cout<<"Op Code"<<opcode<<"Key"<<key<<endl;
if (key.empty())
return Const::ZSC_REC_EMPTYKEY; //-1, empty key not allowed.
else
zpack.set_key(key);
if (val.empty()) {
zpack.set_val("^"); //coup, to fix ridiculous bug of protobuf! //to debug
zpack.set_valnull(true);
} else {
zpack.set_val(val);
zpack.set_valnull(false);
}
if (val2.empty()) {
zpack.set_newval("?"); //coup, to fix ridiculous bug of protobuf! //to debug
zpack.set_newvalnull(true);
} else {
zpack.set_newval(val2);
zpack.set_newvalnull(false);
}
zpack.set_lease(Const::toString(lease));
//cout<<"lease "<<lease<<endl;
string msg = zpack.SerializeAsString();
//cout<<msg<<endl;
/*ZPack tmp;
tmp.ParseFromString(msg);
printf("{%s}:{%s,%s}\n", tmp.key().c_str(), tmp.val().c_str(),
tmp.newval().c_str());*/
/*
char *buf = (char*) calloc(_msg_maxsize, sizeof(char));
size_t msz = _msg_maxsize;
*/
/*send to and receive from*/
// this is old making large msg problem
//_proxy->sendrecv(msg.c_str(), msg.size(), buf, msz);
TCPProxy tcp;
ZHTUtil zu;
HostEntity he = zu.getHostEntityByKey(msg);
int sock = tcp.getSockCached(he.host, he.port);
tcp.sendTo(sock, (void*) msg.c_str(), msg.size());
string res;
int recvcount = loopedrecv(sock, NULL, res);
/*...parse status and result*/
string sstatus;
// srecv is no longer used due to a large msg fix. now instead of sendrecv,
//we are using sendto and loopedrecv methods
/*
string srecv(buf);
cout<<"res value is "<<res<<endl;
if (srecv.empty()) {
cout<<"empty"<<endl;
sstatus = Const::ZSC_REC_SRVEXP;
} else {
result = srecv.substr(3); //the left, if any, is lookup result or second-try zpack
//cout<<"srecv string size="<<srecv.size()<<endl;
if (srecv.size() == 36) {
sstatus = srecv.substr(0, 36);
//sstatus=Const::ZSC_REC_REMOVEMETADATAQUEUE;
} else {
sstatus = srecv.substr(0, 3); //status returned, the first three chars, like 001, -98...
}
}
*/
//cout<<"res value is "<<res<<endl;
if (res.empty()) {
//cout<<"empty"<<endl;
sstatus = Const::ZSC_REC_SRVEXP;
} else {
result = res.substr(3); //the left, if any, is lookup result or second-try zpack
//cout<<"srecv string size="<<srecv.size()<<endl;
if (res.size() == 36) {
sstatus = res.substr(0, 36);
//sstatus=Const::ZSC_REC_REMOVEMETADATAQUEUE;
} else {
sstatus = res.substr(0, 3); //status returned, the first three chars, like 001, -98...
}
}
//.........这里部分代码省略.........
开发者ID:arihant15,项目名称:CloudKonPlus,代码行数:101,代码来源:cpp_zhtclient.cpp
示例10: if
string HTWorker::run(const char *buf) {
string result;
ZPack zpack;
//string str(buf);
string* str =(string*) buf;
zpack.ParseFromString(*str);
if(ZPack_Pack_type_BATCH_REQ == zpack.pack_type()){//batch
cout << "HTWrorker::run(): ZPack_Pack_type_BATCH_REQ received."<< endl;
cout << "Batch contains "<< zpack.batch_item_size() << " items."<<endl;
cout <<"zpack.key: "<< zpack.key() <<endl;
cout <<"zpack.batch_item(i).val: "<<zpack.batch_item(0).val() << endl<< endl;
result = Const::ZSC_REC_UOPC; // "OK";
}else if(ZPack_Pack_type_SINGLE == zpack.pack_type()){//single
if (zpack.opcode() == Const::ZSC_OPC_LOOKUP) {
result = lookup(zpack);
} else if (zpack.opcode() == Const::ZSC_OPC_INSERT) {
result = insert(zpack);
} else if (zpack.opcode() == Const::ZSC_OPC_APPEND) {
result = append(zpack);
} else if (zpack.opcode() == Const::ZSC_OPC_CMPSWP) {
result = compare_swap(zpack);
} else if (zpack.opcode() == Const::ZSC_OPC_REMOVE) {
result = remove(zpack);
} else if (zpack.opcode() == Const::ZSC_OPC_STCHGCB) {
result = state_change_callback(zpack);
} else {
result = Const::ZSC_REC_UOPC;
}
}
return result;
}
开发者ID:mierl,项目名称:zht-h,代码行数:46,代码来源:HTWorker.cpp
注:本文中的ZPack类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论