示例#1
0
void CodisClient::mget2Callback(redisAsyncContext *c, void *r, void *privdata)
{
    // mget异步调用的回调函数
    // 合并结果数据到merger, 在最后一个mget回调处理完成后,通过cv通知
    redisReply *reply = (redisReply*) r;
    MgetAsyncRequestContext *rctxt = (MgetAsyncRequestContext*) privdata;

    KVMap kvmap;
    //  printf("result count: %d\n", reply->elements);
    for (size_t i = 0; i < reply->elements; ++i)
    {
        string value = std::string(reply->element[i]->str,
                                   reply->element[i]->len);
        string user_key = rctxt->user_keylist_[i];
        //    printf("callback, key:(%s), value(%s), counter(%d)\n", user_key.c_str(), value.c_str(), rctxt->merger_->counter_);
        kvmap.insert(make_pair(user_key, value));
    }

    (rctxt->callback)(kvmap);

    rctxt->client->returnAsync(*(rctxt->async_context));

    if (rctxt != NULL)
    {
        delete rctxt;
        rctxt = NULL;
    }
}
示例#2
0
bool Utils::_loadConfig(const char *filename, rapidjson::Document &doc, KVMap &kvmap, bool &bLoaded)
{
	std::string fullPath = FileUtils::getInstance()->fullPathForFilename(filename);
	std::string fileContent = FileUtils::getInstance()->getStringFromFile(fullPath);

	doc.Parse<0>(fileContent.c_str());
	if (doc.HasParseError()) {
		CCLOG("GetParseError %s\n", doc.GetParseError());
		return false;
	}

	for (rapidjson::Value::ConstMemberIterator it=doc.MemberonBegin(); it!=doc.MemberonEnd(); ++it)
	{
		const auto &member = *it;
		const char *name = member.name.GetString();
		const rapidjson::Value &val = member.value;
		kvmap.insert(Utils::KVMapPair(name, val));
	}

	bLoaded = true;
	return true;
}
示例#3
0
文件: modes.cpp 项目: alinelena/aten
// Set plugin to use in export
void Aten::setExportModelPlugin(const FilePluginInterface* plugin, KVMap pluginOptions)
{
	exportModelPlugin_ = plugin;
	for (KVPair* pair = pluginOptions.pairs(); pair != NULL; pair = pair->next) exportModelPluginOptions_.add(pair->key(), pair->value());
}