当前位置: 首页>>代码示例>>C++>>正文


C++ DataBase::insertKey方法代码示例

本文整理汇总了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;
    }
}
开发者ID:dszhengyu,项目名称:cabinet,代码行数:56,代码来源:SetCommand.cpp


注:本文中的DataBase::insertKey方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。