хранитель zoo_aget_children () вызывает функцию обратного вызова

я использую zoo_aget_children(handle, node, 0, callback, context) установить часы для узла. А потом, в callback:

zhandle_t *_handle = NULL;
const char *path = "/downloader_service";

void init_callback(zhandle_t *handle, int type, int state, const char *path, void *context) {
if (type == ZOO_SESSION_EVENT) {
if (state == ZOO_CONNECTED_STATE)
cout<<"zookeeper connected"<<endl;
}
}

void callback(int rc, const struct String_vector *strings, const void *data) {
if (rc != ZOK)
cerr<<"callback: "<<zerror(rc)<<endl;
cerr<<"callback called."<<endl;
zoo_aget_children(_handle, path, 1, callback, data);
}

int main(int argc, char **argv) {
zoo_set_debug_level(ZOO_LOG_LEVEL_ERROR);
_handle = zookeeper_init("127.0.0.1:2181", init_callback, 30000, 0, 0, 0);
if (_handle == NULL)
zerror(errno);

sleep(1); // let zookeeper connect first
int rc = zoo_aget_children(_handle, path, 1, callback, (void *)path);
if (rc != ZOK)
cerr<<"main: "<<zerror(rc)<<endl;

while (1)
sleep(86400);

return 0;
}

Зоопарк продолжает звонить callback даже если дети node не изменились Версия Zookeeper 3.4.9Я пытался установить watch flag до 1, но это не работает. И я тоже старался не звонить zoo_aget_children в callbak, но это тоже не работает.

Продолжайте печатать

Обратный звонок называется.
Обратный звонок называется.
Обратный звонок называется.
Обратный звонок называется.

ЗАЧЕМ? Я использую Zookeeper C API неправильный путь?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …