0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 #include <stdio.h>
0035 #include <stdlib.h>
0036 #include <ndebug.h>
0037 #include <atmi.h>
0038 #include <ndrstandard.h>
0039 #include <ubf.h>
0040 #include <test.fd.h>
0041 #include <string.h>
0042 #include <unistd.h>
0043 #include "test104.h"
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056 void QFWD1 (TPSVCINFO *p_svc)
0057 {
0058 int ret=EXSUCCEED;
0059 char testbuf[1024];
0060 UBFH *p_ub = (UBFH *)p_svc->data;
0061 TPQCTL ctl;
0062 memset(&ctl, 0, sizeof(ctl));
0063
0064 if (EXSUCCEED!=tpenqueue("TESTSP", "Q2", &ctl, (char *)p_ub, 0, 0))
0065 {
0066 NDRX_LOG(log_error, "tpenqueue() to `QFWD2' failed %s diag: %d:%s",
0067 tpstrerror(tperrno), ctl.diagnostic, ctl.diagmsg);
0068 EXFAIL_OUT(ret);
0069 EXFAIL_OUT(ret);
0070 }
0071
0072 out:
0073 tpreturn( ret==EXSUCCEED?TPSUCCESS:TPFAIL,
0074 0L,
0075 (char *)p_ub,
0076 0L,
0077 0L);
0078 }
0079
0080 void QFWD2 (TPSVCINFO *p_svc)
0081 {
0082 int ret=EXSUCCEED;
0083 char testbuf[1024];
0084 UBFH *p_ub = (UBFH *)p_svc->data;
0085 TPQCTL ctl;
0086 memset(&ctl, 0, sizeof(ctl));
0087
0088 if (EXSUCCEED!=tpenqueue("TESTSP", "Q1", &ctl, (char *)p_ub, 0, 0))
0089 {
0090
0091 NDRX_LOG(log_error, "tpenqueue() to `QFWD2' failed %s diag: %d:%s",
0092 tpstrerror(tperrno), ctl.diagnostic, ctl.diagmsg);
0093 EXFAIL_OUT(ret);
0094 EXFAIL_OUT(ret);
0095 }
0096
0097 out:
0098 tpreturn( ret==EXSUCCEED?TPSUCCESS:TPFAIL,
0099 0L,
0100 (char *)p_ub,
0101 0L,
0102 0L);
0103 }
0104
0105
0106
0107
0108 int NDRX_INTEGRA(tpsvrinit)(int argc, char **argv)
0109 {
0110 int ret = EXSUCCEED;
0111 NDRX_LOG(log_debug, "tpsvrinit called");
0112
0113 if (EXSUCCEED!=tpadvertise("QFWD1", QFWD1))
0114 {
0115 NDRX_LOG(log_error, "Failed to advertise QFWD1!");
0116 EXFAIL_OUT(ret);
0117 }
0118
0119 if (EXSUCCEED!=tpadvertise("QFWD2", QFWD1))
0120 {
0121 NDRX_LOG(log_error, "Failed to advertise QFWD2!");
0122 EXFAIL_OUT(ret);
0123 }
0124
0125 if (EXSUCCEED!=tpopen())
0126 {
0127 NDRX_LOG(log_error, "Failed to open XA: %s",
0128 tpstrerror(tperrno));
0129 EXFAIL_OUT(ret);
0130 }
0131
0132
0133 if (EXSUCCEED!=tpbegin(30, 0) ||
0134 EXSUCCEED!=tpcommit(0))
0135 {
0136 NDRX_LOG(log_error, "Transaction fail: %s",
0137 tpstrerror(tperrno));
0138 EXFAIL_OUT(ret);
0139 }
0140
0141 out:
0142 return ret;
0143 }
0144
0145
0146
0147
0148 void NDRX_INTEGRA(tpsvrdone)(void)
0149 {
0150 NDRX_LOG(log_debug, "tpsvrdone called");
0151 tpclose();
0152 }
0153
0154