testquorum.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include <config.h>
  2. #include <sys/types.h>
  3. #include <stdio.h>
  4. #include <stdint.h>
  5. #include <stdlib.h>
  6. #include <unistd.h>
  7. #include <corosync/corotypes.h>
  8. #include <corosync/quorum.h>
  9. static quorum_handle_t handle;
  10. static void quorum_notification_fn(
  11. quorum_handle_t handle,
  12. uint32_t quorate,
  13. uint64_t ring_id,
  14. uint32_t view_list_entries,
  15. uint32_t *view_list)
  16. {
  17. int i;
  18. printf("quorum notification called \n");
  19. printf(" quorate = %lu\n", (long unsigned int) quorate);
  20. printf(" ring id = %llu\n", (long long unsigned int) ring_id);
  21. printf(" num nodes = %lu ", (long unsigned int) view_list_entries);
  22. for (i=0; i<view_list_entries; i++) {
  23. printf(" %d ", view_list[i]);
  24. }
  25. printf("\n");
  26. }
  27. int main(int argc, char *argv[])
  28. {
  29. int quorate;
  30. quorum_callbacks_t callbacks;
  31. int err;
  32. callbacks.quorum_notify_fn = quorum_notification_fn;
  33. if ( (err=quorum_initialize(&handle, &callbacks)) != CS_OK)
  34. fprintf(stderr, "quorum_initialize FAILED: %d\n", err);
  35. if ( (err=quorum_trackstart(handle, CS_TRACK_CHANGES)) != CS_OK)
  36. fprintf(stderr, "quorum_trackstart FAILED: %d\n", err);
  37. if ( (err=quorum_getquorate(handle, &quorate)) != CS_OK)
  38. fprintf(stderr, "quorum_getquorate FAILED: %d\n", err);
  39. else {
  40. printf("quorate %d\n", quorate);
  41. }
  42. printf("Waiting for quorum events, press ^C to finish\n");
  43. printf("-------------------\n");
  44. while (1)
  45. quorum_dispatch(handle, CS_DISPATCH_ALL);
  46. return 0;
  47. }