void ZKClient::Exists(const std::string& _node, VCallback<> watcher, VCallback<sp_int32> cb) { LOG(INFO) << "Checking if " << _node << " exists"; sp_int32 rc; if (!watcher) { rc = zoo_aexists(zk_handle_, _node.c_str(), 0, ExistsCompletionHandler, CreateCallback(this, &ZKClient::ZkActionCb, std::move(cb))); } else { rc = zoo_awexists(zk_handle_, _node.c_str(), CallWatcher, CreateCallback(this, &ZKClient::ZkWatcherCb, std::move(watcher)), ExistsCompletionHandler, CreateCallback(this, &ZKClient::ZkActionCb, std::move(cb))); } if (rc) { // There is nothing we can do here. Continuing will only make // other things fail LOG(FATAL) << "zoo_aexists/awexists returned non-zero " << rc << " errno: " << errno << " while checking for node " << _node << "\n"; } }
CSkirmishAIWrapper::CSkirmishAIWrapper(int teamId, const SkirmishAIKey& key): teamId(teamId), cheatEvents(false), ai(NULL), initialized(false), released(false), c_callback(NULL), key(key) { CreateCallback(); }
// Deletes a node void ZKClient::DeleteNode(const std::string& _node, VCallback<sp_int32> cb) { LOG(INFO) << "Deleting zknode " << _node << std::endl; sp_int32 rc = zoo_adelete(zk_handle_, _node.c_str(), -1, VoidCompletionWatcher, CreateCallback(this, &ZKClient::ZkActionCb, std::move(cb))); if (rc) { // There is nothing we can do here. Continuing will only make // other things fail LOG(FATAL) << "zoo_adelete returned non-zero " << rc << " errno: " << errno << " while deleting node " << _node << "\n"; } }
void ZKClient::Set(const std::string& _node, const std::string& _data, sp_int32 _version, VCallback<sp_int32> cb) { LOG(INFO) << "Setting zknode " << _node << std::endl; sp_int32 rc = zoo_aset(zk_handle_, _node.c_str(), _data.c_str(), _data.size(), _version, SetCompletionWatcher, CreateCallback(this, &ZKClient::ZkActionCb, std::move(cb))); if (rc) { // There is nothing we can do here. Continuing will only make // other things fail LOG(FATAL) << "zoo_aset returned non-zero " << rc << " errno: " << errno << " while setting " << _node << "\n"; } }
void ZKClient::Get(const std::string& _node, std::string* _data, sp_int32* _version, VCallback<> watcher, VCallback<sp_int32> cb) { LOG(INFO) << "Getting zknode " << _node << std::endl; ZKClientGetStructure* get_structure = new ZKClientGetStructure(); get_structure->result_ = _data; get_structure->version_ = _version; get_structure->cb_ = CreateCallback(this, &ZKClient::ZkActionCb, std::move(cb)); sp_int32 rc; if (!watcher) { rc = zoo_aget(zk_handle_, _node.c_str(), 0, GetCompletionWatcher, get_structure); } else { rc = zoo_awget(zk_handle_, _node.c_str(), CallWatcher, CreateCallback(this, &ZKClient::ZkWatcherCb, std::move(watcher)), GetCompletionWatcher, get_structure); } if (rc) { // There is nothing we can do here. Continuing will only make // other things fail LOG(FATAL) << "zoo_aget/zoo_awget returned non-zero " << rc << " errno: " << errno << " while getting " << _node << "\n"; } }
void ZKClient::GetChildren(const std::string& _node, std::vector<std::string>* _children, VCallback<sp_int32> cb) { LOG(INFO) << "Getting children for zknode " << _node << std::endl; ZKClientGetChildrenStructure* get_structure = new ZKClientGetChildrenStructure(); get_structure->result_ = _children; get_structure->cb_ = CreateCallback(this, &ZKClient::ZkActionCb, std::move(cb)); sp_int32 rc = zoo_aget_children(zk_handle_, _node.c_str(), 0, GetChildrenCompletionWatcher, get_structure); if (rc) { // There is nothing we can do here. Continuing will only make // other things fail LOG(FATAL) << "zoo_aget_children returned non-zero " << rc << " errno: " << errno << " while getting children of " << _node << "\n"; } }
CSkirmishAIWrapper::CSkirmishAIWrapper(const size_t skirmishAIId): skirmishAIId(skirmishAIId), cheatEvents(false), ai(NULL), initialized(false), released(false), c_callback(NULL) { const SkirmishAIData* aiData = skirmishAIHandler.GetSkirmishAI(skirmishAIId); teamId = aiData->team; SkirmishAIKey keyTmp(aiData->shortName, aiData->version); key = aiLibManager->ResolveSkirmishAIKey(keyTmp); CreateCallback(); }
// Creates a node void ZKClient::CreateNode(const std::string& _node, const std::string& _value, bool _is_ephimeral, VCallback<sp_int32> cb) { sp_int32 flags = 0; if (_is_ephimeral) { flags |= ZOO_EPHEMERAL; } LOG(INFO) << "Creating zknode " << _node << std::endl; sp_int32 rc = zoo_acreate(zk_handle_, _node.c_str(), _value.c_str(), _value.size(), &ZOO_OPEN_ACL_UNSAFE, flags, StringCompletionWatcher, CreateCallback(this, &ZKClient::ZkActionCb, std::move(cb))); if (rc) { // There is nothing we can do here. Continuing will only make // other things fail LOG(FATAL) << "zoo_acreate returned non-zero " << rc << " errno: " << errno << " while creating node " << _node << "\n"; } }
void ZKClient::SendWatchEvent(const ZkWatchEvent& event) { CHECK(client_global_watcher_cb_); zkaction_responses_->enqueue(CreateCallback(&RunWatchEventCb, client_global_watcher_cb_, event)); SignalMainThread(); }
void ZKClient::ZkWatcherCb(VCallback<> cb) { zkaction_responses_->enqueue(CreateCallback(&RunWatcherCb, std::move(cb))); SignalMainThread(); }
void ZKClient::ZkActionCb(VCallback<sp_int32> cb, sp_int32 rc) { zkaction_responses_->enqueue(CreateCallback(&RunUserCb, std::move(cb), rc)); SignalMainThread(); }
void CSkirmishAIWrapper::PostLoad() { CreateCallback(); LoadSkirmishAI(true); }