| 1 | XWBM2MT ;OIFO-Oakland/REM - M2M Broker Example ;05/16/2002  14:09 | 
|---|
| 2 | ;;1.1;RPC BROKER;**28**;Mar 28, 1997 | 
|---|
| 3 | ; | 
|---|
| 4 | QUIT | 
|---|
| 5 | ; | 
|---|
| 6 | EN(CONTX,RPCN) ;Entry point to hard code IP,PORT,AV | 
|---|
| 7 | S IP="127.0.0.1",PORT=9800,AV="QQQQ11;11ZZZZ.." | 
|---|
| 8 | D EN1(CONTX,RPCN,PORT,IP,AV) | 
|---|
| 9 | Q | 
|---|
| 10 | ; | 
|---|
| 11 | EN1(CONTX,RPCN,PORT,IP,AV) ; | 
|---|
| 12 | N I | 
|---|
| 13 | ;Entry point that passes in needed parameters.  If use this entry point, | 
|---|
| 14 | ; need to set up params first. | 
|---|
| 15 | ;CONTX - Name of context | 
|---|
| 16 | ;RPCN - RPC name | 
|---|
| 17 | ;PORT - port number | 
|---|
| 18 | ;IP - IP address | 
|---|
| 19 | ;AV - access/verify codes | 
|---|
| 20 | ;XWBOPEN - set this flag before call to keep connection open after call. | 
|---|
| 21 | K REQ,STATE,RPC | 
|---|
| 22 | S U="^" I $G(DUZ)'>0 W !,"Please Call XUP first!" Q | 
|---|
| 23 | D HOME^%ZIS U IO | 
|---|
| 24 | W !!,"Test a M2M call to ",CONTX," context." | 
|---|
| 25 | D OPEN(PORT,IP,AV) | 
|---|
| 26 | I XWBSTATE("M2M","OPEN")=0 D HOME^%ZIS U IO W !,"Didn't get port open or AV failed." Q | 
|---|
| 27 | I '$$SETCONTX^XWBM2MC(CONTX) D HOME^%ZIS U IO W !,"Didn't get Context" G EXIT | 
|---|
| 28 | ;This code is run if called from EN3 | 
|---|
| 29 | I $G(RMFLAG)=1 D | 
|---|
| 30 | .D CLEARP | 
|---|
| 31 | .D SETPARAM(1,"STRING","RAUL TEST") | 
|---|
| 32 | D HOME^%ZIS U IO | 
|---|
| 33 | W !,"Call ",RPCN," - RPC." | 
|---|
| 34 | I '$$CALLRPC^XWBM2MC(RPCN,"REQ",1) D HOME^%ZIS U IO W !,"Could not run RPC." | 
|---|
| 35 | W !,"Result: " F I=1:1 Q:'$D(REQ(I))  W !,REQ(I) | 
|---|
| 36 | W ! | 
|---|
| 37 | K RMFLAG | 
|---|
| 38 | I $G(XWBOPEN)=1 Q  ;flag to quit and keep connection open | 
|---|
| 39 | ; | 
|---|
| 40 | EXIT D CLOSE | 
|---|
| 41 | Q | 
|---|
| 42 | ; | 
|---|
| 43 | EN2 ;Entry point that hard sets IP,PORT,AV,CONTEXT,RPC. | 
|---|
| 44 | ;RMFLAG - if RMGLAG=1, it will set PARAM in EN1. | 
|---|
| 45 | N IP,PORT,AV,CONTX,RPCN,RMFLAG | 
|---|
| 46 | S RMFLAG=1 | 
|---|
| 47 | ;S IP="10.4.229.21",PORT="9800",AV="2287CTD;11ZZZZ.." ;BayPines Cache | 
|---|
| 48 | S IP="127.0.0.1",PORT=9800,AV="QQQQ11;11ZZZZ.." | 
|---|
| 49 | S CONTX="XWB BROKER EXAMPLE",RPCN="XWB EXAMPLE ECHO STRING" | 
|---|
| 50 | D EN1(CONTX,RPCN,PORT,IP,AV) | 
|---|
| 51 | Q | 
|---|
| 52 | ; | 
|---|
| 53 | EN3(VAL) ;Just runs RPC; need to OPEN, SETCONTX then CLOSE.  Or just call after | 
|---|
| 54 | ; connection has been done. **ONLY WORKS FOR TESTING IN DEV,XWB** | 
|---|
| 55 | N STR,ROOT,RPC,RES | 
|---|
| 56 | S ^TMP("XWBM2MTEST",$J,"TYPE")="STRING" | 
|---|
| 57 | S ^TMP("XWBM2MTEST",$J,"VALUE")=VAL | 
|---|
| 58 | S ROOT=$NA(^TMP("XWBM2MTEST",$J)) | 
|---|
| 59 | I '$$PARAM^XWBM2MC(1,ROOT) W !,"PARAM failed." Q 0 | 
|---|
| 60 | S RPC="ZZRM TEST RPC",RES="RESPONSE" | 
|---|
| 61 | I '$$CALLRPC^XWBM2MC(RPC,RES,0) Q 0  ;D HOME^%ZIS U IO W !,"Could not run RPC." | 
|---|
| 62 | K ^TMP("XWBM2MTEST") | 
|---|
| 63 | Q 1 | 
|---|
| 64 | ; | 
|---|
| 65 | ECHOSTR ;Example of Echo String | 
|---|
| 66 | N XWBSTR,XWBIP,XWBPORT,XWBAV,Y | 
|---|
| 67 | S XWBIP="",XWBPORT="",XWBAV="" | 
|---|
| 68 | K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter String: ",DIR("B")="TEST STRING" | 
|---|
| 69 | D ^DIR I $D(DIRUT) Q | 
|---|
| 70 | S XWBSTR=$$CHARCHK^XWBUTL(Y) | 
|---|
| 71 | D CLEARP | 
|---|
| 72 | D SETPARAM(1,"STRING",XWBSTR) | 
|---|
| 73 | I $G(XWBFLAG) D EN("XWB BROKER EXAMPLE","XWB EXAMPLE ECHO STRING") K XWBFLAG Q | 
|---|
| 74 | D USERIP Q:$G(XWBQUIT) | 
|---|
| 75 | D EN1("XWB BROKER EXAMPLE","XWB EXAMPLE ECHO STRING",XWBPORT,XWBIP,XWBAV) | 
|---|
| 76 | D CLEAN | 
|---|
| 77 | Q | 
|---|
| 78 | ; | 
|---|
| 79 | WP ;Example of WP | 
|---|
| 80 | N XWBSTR,XWBIP,XWBPORT,XWBAV | 
|---|
| 81 | S XWBIP="",XWBPORT="",XWBAV="" | 
|---|
| 82 | D CLEARP | 
|---|
| 83 | I $G(XWBFLAG) D EN("XWB BROKER EXAMPLE","XWB EXAMPLE WPTEXT") K XWBFLAG Q | 
|---|
| 84 | D USERIP Q:$G(XWBQUIT) | 
|---|
| 85 | D EN1("XWB BROKER EXAMPLE","XWB EXAMPLE WPTEXT",XWBPORT,XWBIP,XWBAV) | 
|---|
| 86 | D CLEAN | 
|---|
| 87 | Q | 
|---|
| 88 | ; | 
|---|
| 89 | LARRY ;Example of passing Array (mult). | 
|---|
| 90 | N XWBIP,XWBPORT,XWBAV | 
|---|
| 91 | S XWBIP="",XWBPORT="",XWBAV="" | 
|---|
| 92 | D CLEARP | 
|---|
| 93 | S XWBPARMS("PARAMS",1,"TYPE")="ARRAY" | 
|---|
| 94 | S XWBPARMS("PARAMS",1,"VALUE","Raul")="Programmer" | 
|---|
| 95 | S XWBPARMS("PARAMS",1,"VALUE","Susan")="Tech Writter" | 
|---|
| 96 | S XWBPARMS("PARAMS",1,"VALUE","Dan")="Project Mgr" | 
|---|
| 97 | I $G(XWBFLAG) D EN("XWB BROKER EXAMPLE","XWB M2M EXAMPLE LARRY") K XWBFLAG Q | 
|---|
| 98 | D USERIP Q:$G(XWBQUIT) | 
|---|
| 99 | D EN1("XWB BROKER EXAMPLE","XWB M2M EXAMPLE LARRY",XWBPORT,XWBIP,XWBAV) | 
|---|
| 100 | D CLEAN | 
|---|
| 101 | Q | 
|---|
| 102 | ; | 
|---|
| 103 | LARRYRP(XWBY,XWBARR,XWBSTR) ;Remote procedure for local array | 
|---|
| 104 | NEW XWBX,XWBLINE | 
|---|
| 105 | ; | 
|---|
| 106 | SET XWBLINE=0 | 
|---|
| 107 | I $G(XWBSTR)'="" S XWBY(1)=$G(XWBSTR) S XWBLINE=1 | 
|---|
| 108 | SET XWBX="" FOR  SET XWBX=$O(XWBARR(XWBX)) QUIT:XWBX=""  DO | 
|---|
| 109 | .S XWBLINE=XWBLINE+1 | 
|---|
| 110 | .S XWBY(XWBLINE)=XWBX_" / "_XWBARR(XWBX) | 
|---|
| 111 | Q | 
|---|
| 112 | ; | 
|---|
| 113 | LARRSTR ;Example of passing Array (mult) and String. | 
|---|
| 114 | N XWBIP,XWBPORT,XWBAV | 
|---|
| 115 | S XWBIP="",XWBPORT="",XWBAV="" | 
|---|
| 116 | D CLEARP | 
|---|
| 117 | S XWBPARMS("PARAMS",1,"TYPE")="ARRAY" | 
|---|
| 118 | S XWBPARMS("PARAMS",1,"VALUE","Raul")="Programmer" | 
|---|
| 119 | S XWBPARMS("PARAMS",1,"VALUE","Susan")="Tech Writter" | 
|---|
| 120 | S XWBPARMS("PARAMS",1,"VALUE","Dan")="Project Mgr" | 
|---|
| 121 | S XWBPARMS("PARAMS",2,"TYPE")="STRING" | 
|---|
| 122 | S XWBPARMS("PARAMS",2,"VALUE")="String and Array (MULT) TEST" | 
|---|
| 123 | I $G(XWBFLAG) D EN("XWB BROKER EXAMPLE","XWB M2M EXAMPLE LARRY") K XWBFLAG Q | 
|---|
| 124 | D USERIP Q:$G(XWBQUIT) | 
|---|
| 125 | D EN1("XWB BROKER EXAMPLE","XWB M2M EXAMPLE LARRY",XWBPORT,XWBIP,XWBAV) | 
|---|
| 126 | D CLEAN | 
|---|
| 127 | Q | 
|---|
| 128 | ; | 
|---|
| 129 | REF ;Example of passing a value by reference | 
|---|
| 130 | N XWBREF,Y,XWBSTR,XWBIP,XWBPORT,XWBAV | 
|---|
| 131 | S XWBIP="",XWBPORT="",XWBAV="" | 
|---|
| 132 | K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter Reference Value: ",DIR("B")="DT" | 
|---|
| 133 | D ^DIR I $D(DIRUT) Q | 
|---|
| 134 | S XWBREF=$$CHARCHK^XWBUTL(Y) | 
|---|
| 135 | D CLEARP | 
|---|
| 136 | D SETPARAM(1,"REF",XWBREF) | 
|---|
| 137 | I $G(XWBFLAG) D EN("XWB BROKER EXAMPLE","XWB M2M EXAMPLE REF") K XWBFLAG Q | 
|---|
| 138 | D USERIP Q:$G(XWBQUIT) | 
|---|
| 139 | D EN1("XWB BROKER EXAMPLE","XWB M2M EXAMPLE REF",XWBPORT,XWBIP,XWBAV) | 
|---|
| 140 | D CLEAN | 
|---|
| 141 | Q | 
|---|
| 142 | ; | 
|---|
| 143 | REFRP(RET,PARAM) ;Remote procedure for value passed by reference | 
|---|
| 144 | S RET(0)=PARAM | 
|---|
| 145 | Q | 
|---|
| 146 | ; | 
|---|
| 147 | USERIP ;Get IP,Port,AV from user for connection. | 
|---|
| 148 | N Y | 
|---|
| 149 | S XWBQUIT=0 | 
|---|
| 150 | K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter IP: ",DIR("B")="127.0.0.1" | 
|---|
| 151 | D ^DIR I $D(DIRUT) S XWBQUIT=1 Q | 
|---|
| 152 | S XWBIP=Y | 
|---|
| 153 | K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter PORT: ",DIR("B")="9800" | 
|---|
| 154 | D ^DIR I $D(DIRUT) S XWBQUIT=1 Q | 
|---|
| 155 | S XWBPORT=Y | 
|---|
| 156 | K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter AV: ",DIR("?")="e.g. Smith;11PASSWORD!! " | 
|---|
| 157 | D ^DIR I $D(DIRUT) S XWBQUIT=1 Q | 
|---|
| 158 | S XWBAV=Y | 
|---|
| 159 | K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter CONTEXT: ",DIR("B")="XWB BROKER EXAMPLE" | 
|---|
| 160 | D ^DIR I $D(DIRUT) S XWBQUIT=1 Q | 
|---|
| 161 | S XWBCONTX=Y | 
|---|
| 162 | I $G(XWBREPFL) D | 
|---|
| 163 | .K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter REPS: " | 
|---|
| 164 | .D ^DIR I $D(DIRUT) S XWBQUIT=1 Q | 
|---|
| 165 | .S XWBREPS=Y | 
|---|
| 166 | Q | 
|---|
| 167 | ; | 
|---|
| 168 | OPEN(PORT,IP,AV) ;Opens connection to server. | 
|---|
| 169 | ;S IP="127.0.0.1",PORT="9800",AV="QQQQ11;11ZZZZ.." ;Local | 
|---|
| 170 | ;S IP="10.4.229.21",PORT="9800",AV="2287CTD;11ZZZZ.." ;BayPines Cache | 
|---|
| 171 | S XWBSTATE("M2M","OPEN")=$$CONNECT^XWBM2MC(PORT,IP,AV) | 
|---|
| 172 | Q | 
|---|
| 173 | ; | 
|---|
| 174 | CLOSE ;Close the connection. | 
|---|
| 175 | S X=$$CLOSE^XWBM2MC() | 
|---|
| 176 | S XWBSTATE("M2M","OPEN")=0 | 
|---|
| 177 | D CLEAN | 
|---|
| 178 | K X,XWBOPEN | 
|---|
| 179 | Q | 
|---|
| 180 | ; | 
|---|
| 181 | CLEARP ;Clear the PARAMS array | 
|---|
| 182 | I '$G(XWBDBUG) K XWBPARMS | 
|---|
| 183 | D PRE^XWBM2MC | 
|---|
| 184 | Q | 
|---|
| 185 | ; | 
|---|
| 186 | SETPARAM(INDEX,TYPE,VALUE) ;Set a Params entry | 
|---|
| 187 | S XWBPARMS("PARAMS",INDEX,"TYPE")=TYPE | 
|---|
| 188 | S XWBPARMS("PARAMS",INDEX,"VALUE")=VALUE | 
|---|
| 189 | Q | 
|---|
| 190 | ; | 
|---|
| 191 | CLNTMP ;Kills the TMP("XWB*" | 
|---|
| 192 | K ^TMP("XWBM2M"),^TMP("XWBM2MVLC"),^TMP("XWBM2MRPC"),^TMP("XWBM2MRL") | 
|---|
| 193 | K ^TMP("XWBM2ME"),^TMP("XWBM2M"),^TMP("XWBM2ML") | 
|---|
| 194 | Q | 
|---|
| 195 | ; | 
|---|
| 196 | CLEAN ; | 
|---|
| 197 | K REQ,XWBCONTX | 
|---|
| 198 | Q | 
|---|
| 199 | ; | 
|---|