#include "ZookClient.h"
// 测试代码
int main()
{
Client * pzkc = new ZookClient();
ConnectParam param;
//param.ipaddr = "172.17.17.119:52181,10.1.126.214:52181,10.1.126.215:52181,10.1.126.216:52181";
param.ipaddr = "127.0.0.1:2181";
param.username = "cccp";
param.password = "123456";
param.queue_name = "/zk2/aaa.txt;/zk1/bbb.txt;/config/key_extract/CCPKeyExtract.xml";
pzkc->SetConnectParam(param);
LIST_FILE_MAP files;
while (1)
{
pzkc->ListDir("", files);
std::string data;
pzkc->Get("/zk1/bbb.txt", data);
if (nret > 0)
printf("zk1 data=[%s]\n", data.c_str());
pzkc->Delete("/zk1/bbb.txt");
///*int nret = */pzkc->Get("/zk2", data);
pzkc->Get("/zk2/aaa.txt", data);
if (nret > 0)
printf("zk2 data=[%s]\n", data.c_str());
pzkc->Delete("/zk2/aaa.txt");
///*int nret = */pzkc->Get("/zk2", data);
pzkc->Get("/config/key_extract/CCPKeyExtract.xml", data);
if (nret > 0)
printf("/config/key_extract data=[%s]\n", data.c_str());
pzkc->Delete("/config/key_extract/CCPKeyExtract.xml");
printf("======\n");
sleep(10);
}
return 0;
}
// 主要类
// 连接,监测节点变化
#include "ZookClient.h"
#include "StrProc.h"
LIST_FILE_MAP ZookClient::m_mFiles;
std::map<std::string, std::string> ZookClient::m_mFileContext;
std::vector<char *> ZookClient::m_vFilePath;
std::vector<std::string> ZookClient::m_vec;
ZookClient::ZookClient() : Client(), m_pzk(NULL)
{
}
ZookClient::~ZookClient()
{
Close();
Clear();
}
int ZookClient::InitWatchctx(watchctx_t * ctx)
{
if (0 != pthread_cond_init(&ctx->cond, NULL))
{
printf("ZookClient::InitWatchctx()->condition init error!\n");
pthread_cond_destroy(&ctx->cond);
return -1;
}
if (0 != pthread_mutex_init(&ctx->cond_lock, NULL))
{
printf("ZookClient::InitWatchctx()->mutex init error!\n");
pthread_mutex_destroy(&ctx->cond_lock);
return -2;
}
return 0;
}
int ZookClient::Connect()
{
watchctx_t ctx;
if (0 != InitWatchctx(&ctx))