/* Copyright (c) 2013 Red Hat, Inc. This file is part of GlusterFS. This file is licensed to you under your choice of the GNU Lesser General Public License, version 3 or any later version (LGPLv3 or later), or the GNU General Public License, version 2 (GPLv2), in all cases as published by the Free Software Foundation. */ /** * Compile it using: * gcc -o getchanges-multi `pkg-config --cflags libgfchangelog` \ * get-changes-multi.c `pkg-config --libs libgfchangelog` */ #include #include #include #include #include #include #include #include #include "changelog.h" void * brick_init(void *xl, struct gf_brick_spec *brick) { return brick; } void brick_fini(void *xl, char *brick, void *data) { return; } void brick_callback(void *xl, char *brick, void *data, changelog_event_t *ev) { printf("->callback: (brick,type) [%s:%d]\n", brick, ev->ev_type); } void fill_brick_spec(struct gf_brick_spec *brick, char *path) { brick->brick_path = strdup(path); brick->filter = CHANGELOG_OP_TYPE_BR_RELEASE; brick->init = brick_init; brick->fini = brick_fini; brick->callback = brick_callback; brick->connected = NULL; brick->disconnected = NULL; } int main(int argc, char **argv) { int ret = 0; void *bricks = NULL; struct gf_brick_spec *brick = NULL; bricks = calloc(2, sizeof(struct gf_brick_spec)); if (!bricks) goto error_return; brick = (struct gf_brick_spec *)bricks; fill_brick_spec(brick, "/export/z1/zwoop"); brick++; fill_brick_spec(brick, "/export/z2/zwoop"); ret = gf_changelog_init(NULL); if (ret) goto error_return; ret = gf_changelog_register_generic((struct gf_brick_spec *)bricks, 2, 0, "/tmp/multi-changes.log", 9, NULL); if (ret) goto error_return; /* let callbacks do the job */ select(0, NULL, NULL, NULL, NULL); error_return: return -1; }