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

中间件编程

开发平台:

Java

  1. /*
  2.  * JBoss, Home of Professional Open Source
  3.  * Copyright 2008, Red Hat, Inc., and others contributors as indicated
  4.  * by the @authors tag. All rights reserved.
  5.  * See the copyright.txt in the distribution for a
  6.  * full listing of individual contributors.
  7.  * This copyrighted material is made available to anyone wishing to use,
  8.  * modify, copy, or redistribute it subject to the terms and conditions
  9.  * of the GNU Lesser General Public License, v. 2.1.
  10.  * This program is distributed in the hope that it will be useful, but WITHOUT A
  11.  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  12.  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  13.  * You should have received a copy of the GNU Lesser General Public License,
  14.  * v.2.1 along with this distribution; if not, write to the Free Software
  15.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  16.  * MA  02110-1301, USA.
  17.  */
  18. #include <stdio.h>
  19. #include <string.h>
  20. #include "xatmi.h"
  21. #include "tx.h"
  22. #include "userlogc.h"
  23. #include "malloc.h"
  24. #include <stdlib.h>
  25. char prompt(char* prompt) {
  26. userlogc("Please press return after you: %s...", prompt);
  27. return getchar();
  28. }
  29. void output(char* operationName, char* listIn) {
  30. char* list;
  31. char* nextToken;
  32. int i = 0;
  33. userlogc("Output from %s: ", operationName);
  34. list = (char*) malloc(strlen(listIn) + 1);
  35. list[strlen(listIn)] = '';
  36. list = (char*) memcpy(list, listIn, strlen(listIn));
  37. nextToken = strtok(list, ",");
  38. while (nextToken != NULL) {
  39. userlogc((char*) "Element: %d Value: %s", i, nextToken);
  40. nextToken = strtok(NULL, " ");
  41. i++;
  42. }
  43. }
  44. char* itemAt(char* list, int index) {
  45. char* nextToken = strtok(list, ",");
  46. int i = 0;
  47. while (index < i) {
  48. nextToken = strtok(NULL, " ");
  49. i++;
  50. }
  51. return nextToken;
  52. }
  53. int main(int argc, char **argv) {
  54. int tpstatus;
  55. char *retbuf;
  56. long retbufsize;
  57. char *sbuf;
  58. long sbufsize;
  59. long callflags;
  60. char* list;
  61. char* serverName;
  62. int id;
  63. callflags = 0;
  64. retbufsize = 1;
  65. retbuf = tpalloc("X_OCTET", 0, retbufsize);
  66. prompt("Start JBoss Application Server");
  67. prompt("Start an XATMI server");
  68. // listRunningServers
  69. sbufsize = strlen("listRunningServers,") + 1;
  70. sbuf = tpalloc("X_OCTET", 0, sbufsize);
  71. memset(sbuf, 0, sbufsize);
  72. strcpy(sbuf, "listRunningServers,");
  73. tpstatus = tpcall("BTDomainAdmin", sbuf, sbufsize, (char **) &retbuf,
  74. &retbufsize, callflags);
  75. list = (char*) malloc(retbufsize);
  76. strncpy(list, retbuf, retbufsize - 1);
  77. list[retbufsize - 1] = '';
  78. output((char*) "listRunningServers", list);
  79. if (strlen(list) != 0) {
  80. char response = prompt(
  81. "Enter the id of a server to get the instance numbers of");
  82. int index = atoi(&response);
  83. serverName = itemAt(list, index);
  84. // listRunningInstanceIds
  85. sbufsize = strlen("listRunningInstanceIds,,") + strlen(serverName) + 1;
  86. sbuf = tprealloc(sbuf, sbufsize);
  87. memset(sbuf, 0, sbufsize + 1);
  88. sprintf(sbuf, "listRunningInstanceIds,%s,", serverName);
  89. tpstatus = tpcall("BTDomainAdmin", sbuf, sbufsize, (char **) &retbuf,
  90. &retbufsize, callflags);
  91. list = (char*) malloc(retbufsize);
  92. strncpy(list, retbuf, retbufsize - 1);
  93. list[retbufsize - 1] = '';
  94. output((char*) "listRunningInstanceIds", list);
  95. prompt("Start a second instance of the same server");
  96. getchar();
  97. // listRunningInstanceIds
  98. sbufsize = strlen("listRunningInstanceIds,,") + strlen(serverName) + 1;
  99. sbuf = tprealloc(sbuf, sbufsize);
  100. memset(sbuf, 0, sbufsize + 1);
  101. sprintf(sbuf, "listRunningInstanceIds,%s,", serverName);
  102. tpstatus = tpcall("BTDomainAdmin", sbuf, sbufsize, (char **) &retbuf,
  103. &retbufsize, callflags);
  104. list = (char*) malloc(retbufsize);
  105. strncpy(list, retbuf, retbufsize - 1);
  106. list[retbufsize - 1] = '';
  107. output((char*) "listRunningInstanceIds", list);
  108. response = prompt(
  109. "Enter the instance id of the server you wish to shutdown");
  110. id = atoi(&response);
  111. // shutdown
  112. sbufsize = strlen("shutdown,,,,") + strlen(serverName) + 1 + 1;
  113. sbuf = tprealloc(sbuf, sbufsize);
  114. memset(sbuf, 0, sbufsize + 1);
  115. sprintf(sbuf, "shutdown,%s,%d,", serverName, id);
  116. tpstatus = tpcall("BTDomainAdmin", sbuf, sbufsize, (char **) &retbuf,
  117. &retbufsize, callflags);
  118. } else {
  119. userlogc((char*) "ERROR: There were no running servers detected");
  120. }
  121. //tpfree(sbuf);
  122. tpfree(retbuf);
  123. return 0;
  124. }