本文整理汇总了C++中DataBase::insertKey方法的典型用法代码示例。如果您正苦于以下问题:C++ DataBase::insertKey方法的具体用法?C++ DataBase::insertKey怎么用?C++ DataBase::insertKey使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DataBase
的用法示例。
在下文中一共展示了DataBase::insertKey方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: operator
/*
*brief: 首先检查用户出入解析结果是否正确,
* 检查数据空间中, 是否有对应的键
* 有对应的键, 如果类型正确, 修改键值
* 如果类型错误, 返回出错
* 无对应的键, 设置值, 返回成功
*
*/
int SetCommand::operator()(Client *client) const {
ServerClient *serverClient = (ServerClient *)client;
//check user resolved input
const vector<string> &argv = client->getReceiveArgv();
if (argv.size() != (unsigned int)(this->commandArgc() + 1)) {
logWarning("set command receive error number of argv! argv_len[%d]", argv.size());
client->initReplyHead(1);
client->appendReplyBody(string("set no complete yet"));
return CABINET_ERR;
}
const string &keyName = argv[1];
const string &newValue = argv[2];
//check key existence
DataBase *db = serverClient->getDataBase();
ValueObj *value = nullptr;
//1. key exist
if ((value = db->getValue(keyName)) != nullptr) {
logDebug("set exist key, key[%s]", keyName.c_str());
//check key type
if (value->getValueType() != ValueObj::STRING_TYPE) {
logDebug("set command execute in wrong type of value, key[%s] value_type[%d]", keyName.c_str(), value->getValueType());
client->initReplyHead(1);
client->appendReplyBody(string("I'm not string type."));
return CABINET_OK;
}
logDebug("set string value, key[%s], new_value[%s]", keyName.c_str(), newValue.c_str());
((StringObj *)value)->set(newValue);
client->initReplyHead(1);
client->appendReplyBody(string("ok"));
return CABINET_OK;
}
//2. key does not exist
else {
logDebug("set no-exist key, key[%s]", keyName.c_str());
//to-do, insert new thing in dataspace
ValueObj *newObj = new StringObj(newValue);
if (db->insertKey(keyName, newObj) == CABINET_ERR) {
logWarning("set command, insert key into dataspace error, key[%s]", keyName.c_str());
client->initReplyHead(1);
client->appendReplyBody(string("Set Error"));
return CABINET_ERR;
}
client->initReplyHead(1);
client->appendReplyBody(string("ok"));
return CABINET_OK;
}
}