rclog.cxx
上传用户:xfwatch
上传日期:2020-12-14
资源大小:872k
文件大小:1k
源码类别:

中间件编程

开发平台:

Java

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <XARecoveryLog.h>
  4. #define IOR(rr) ((char *) (rr + 1))
  5. /*
  6.  * This example shows how to dump the transaction recovery log. Compile as follows:
  7.  *
  8.  * g++ -I$BLACKTIE_HOME/include -L$BLACKTIE_HOME/lib -latmibroker-tx rclog.cxx
  9.  *
  10.  * There is also an interactive mode for deleting records. WARNING deleting a
  11.  * recovery record means that its corresponding transaction branch will have
  12.  * to be recovered manually.
  13.  */
  14. int
  15. main(int argc, char* argv[])
  16. {
  17.     if (argc <= 2) {
  18.         fprintf(stderr, "syntax %s <-i|-v> <recovery log file path>n", argv[0]);
  19.         return -1;
  20.     }
  21.     XARecoveryLog log(argv[2]);
  22. bool prompt = (strcmp(argv[1], "-i") == 0 ? true : false);
  23.     for (rrec_t* rr = log.find_next(0); rr; rr = log.find_next(rr)) {
  24. XID &xid = rr->xid;
  25.         fprintf(stdout, "XID=%ld:%ld:%ld:%s IOR=%sn", xid.formatID, xid.gtrid_length, xid.bqual_length,
  26. (char *) (xid.data + xid.gtrid_length), IOR(rr));
  27. if (prompt) {
  28. char ans[64];
  29. fprintf(stdout, "Do you wish to delete this record [y/n]? ");
  30. if (fgets(ans, sizeof (ans), stdin) != NULL && ans[0] == 'y') {
  31. log.del_rec(rr->xid);
  32. }
  33. }
  34. }
  35.     return 0;
  36. }