Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XWBM2MT

XWBM2MT.m

Go to the documentation of this file.
  1. XWBM2MT ;OIFO-Oakland/REM - M2M Broker Example ;05/16/2002 14:09
  1. ;;1.1;RPC BROKER;**28**;Mar 28, 1997
  1. ;
  1. QUIT
  1. ;
  1. EN(CONTX,RPCN) ;Entry point to hard code IP,PORT,AV
  1. S IP="127.0.0.1",PORT=9800,AV="QQQQ11;11ZZZZ.."
  1. D EN1(CONTX,RPCN,PORT,IP,AV)
  1. Q
  1. ;
  1. EN1(CONTX,RPCN,PORT,IP,AV) ;
  1. N I
  1. ;Entry point that passes in needed parameters. If use this entry point,
  1. ; need to set up params first.
  1. ;CONTX - Name of context
  1. ;RPCN - RPC name
  1. ;PORT - port number
  1. ;IP - IP address
  1. ;AV - access/verify codes
  1. ;XWBOPEN - set this flag before call to keep connection open after call.
  1. K REQ,STATE,RPC
  1. S U="^" I $G(DUZ)'>0 W !,"Please Call XUP first!" Q
  1. D HOME^%ZIS U IO
  1. W !!,"Test a M2M call to ",CONTX," context."
  1. D OPEN(PORT,IP,AV)
  1. I XWBSTATE("M2M","OPEN")=0 D HOME^%ZIS U IO W !,"Didn't get port open or AV failed." Q
  1. I '$$SETCONTX^XWBM2MC(CONTX) D HOME^%ZIS U IO W !,"Didn't get Context" G EXIT
  1. ;This code is run if called from EN3
  1. I $G(RMFLAG)=1 D
  1. .D CLEARP
  1. .D SETPARAM(1,"STRING","RAUL TEST")
  1. D HOME^%ZIS U IO
  1. W !,"Call ",RPCN," - RPC."
  1. I '$$CALLRPC^XWBM2MC(RPCN,"REQ",1) D HOME^%ZIS U IO W !,"Could not run RPC."
  1. W !,"Result: " F I=1:1 Q:'$D(REQ(I)) W !,REQ(I)
  1. W !
  1. K RMFLAG
  1. I $G(XWBOPEN)=1 Q ;flag to quit and keep connection open
  1. ;
  1. EXIT D CLOSE
  1. Q
  1. ;
  1. EN2 ;Entry point that hard sets IP,PORT,AV,CONTEXT,RPC.
  1. ;RMFLAG - if RMGLAG=1, it will set PARAM in EN1.
  1. N IP,PORT,AV,CONTX,RPCN,RMFLAG
  1. S RMFLAG=1
  1. ;S IP="10.4.229.21",PORT="9800",AV="2287CTD;11ZZZZ.." ;BayPines Cache
  1. S IP="127.0.0.1",PORT=9800,AV="QQQQ11;11ZZZZ.."
  1. S CONTX="XWB BROKER EXAMPLE",RPCN="XWB EXAMPLE ECHO STRING"
  1. D EN1(CONTX,RPCN,PORT,IP,AV)
  1. Q
  1. ;
  1. EN3(VAL) ;Just runs RPC; need to OPEN, SETCONTX then CLOSE. Or just call after
  1. ; connection has been done. **ONLY WORKS FOR TESTING IN DEV,XWB**
  1. N STR,ROOT,RPC,RES
  1. S ^TMP("XWBM2MTEST",$J,"TYPE")="STRING"
  1. S ^TMP("XWBM2MTEST",$J,"VALUE")=VAL
  1. S ROOT=$NA(^TMP("XWBM2MTEST",$J))
  1. I '$$PARAM^XWBM2MC(1,ROOT) W !,"PARAM failed." Q 0
  1. S RPC="ZZRM TEST RPC",RES="RESPONSE"
  1. I '$$CALLRPC^XWBM2MC(RPC,RES,0) Q 0 ;D HOME^%ZIS U IO W !,"Could not run RPC."
  1. K ^TMP("XWBM2MTEST")
  1. Q 1
  1. ;
  1. ECHOSTR ;Example of Echo String
  1. N XWBSTR,XWBIP,XWBPORT,XWBAV,Y
  1. S XWBIP="",XWBPORT="",XWBAV=""
  1. K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter String: ",DIR("B")="TEST STRING"
  1. D ^DIR I $D(DIRUT) Q
  1. S XWBSTR=$$CHARCHK^XWBUTL(Y)
  1. D CLEARP
  1. D SETPARAM(1,"STRING",XWBSTR)
  1. I $G(XWBFLAG) D EN("XWB BROKER EXAMPLE","XWB EXAMPLE ECHO STRING") K XWBFLAG Q
  1. D USERIP Q:$G(XWBQUIT)
  1. D EN1("XWB BROKER EXAMPLE","XWB EXAMPLE ECHO STRING",XWBPORT,XWBIP,XWBAV)
  1. D CLEAN
  1. Q
  1. ;
  1. WP ;Example of WP
  1. N XWBSTR,XWBIP,XWBPORT,XWBAV
  1. S XWBIP="",XWBPORT="",XWBAV=""
  1. D CLEARP
  1. I $G(XWBFLAG) D EN("XWB BROKER EXAMPLE","XWB EXAMPLE WPTEXT") K XWBFLAG Q
  1. D USERIP Q:$G(XWBQUIT)
  1. D EN1("XWB BROKER EXAMPLE","XWB EXAMPLE WPTEXT",XWBPORT,XWBIP,XWBAV)
  1. D CLEAN
  1. Q
  1. ;
  1. LARRY ;Example of passing Array (mult).
  1. N XWBIP,XWBPORT,XWBAV
  1. S XWBIP="",XWBPORT="",XWBAV=""
  1. D CLEARP
  1. S XWBPARMS("PARAMS",1,"TYPE")="ARRAY"
  1. S XWBPARMS("PARAMS",1,"VALUE","Raul")="Programmer"
  1. S XWBPARMS("PARAMS",1,"VALUE","Susan")="Tech Writter"
  1. S XWBPARMS("PARAMS",1,"VALUE","Dan")="Project Mgr"
  1. I $G(XWBFLAG) D EN("XWB BROKER EXAMPLE","XWB M2M EXAMPLE LARRY") K XWBFLAG Q
  1. D USERIP Q:$G(XWBQUIT)
  1. D EN1("XWB BROKER EXAMPLE","XWB M2M EXAMPLE LARRY",XWBPORT,XWBIP,XWBAV)
  1. D CLEAN
  1. Q
  1. ;
  1. LARRYRP(XWBY,XWBARR,XWBSTR) ;Remote procedure for local array
  1. NEW XWBX,XWBLINE
  1. ;
  1. SET XWBLINE=0
  1. I $G(XWBSTR)'="" S XWBY(1)=$G(XWBSTR) S XWBLINE=1
  1. SET XWBX="" FOR SET XWBX=$O(XWBARR(XWBX)) QUIT:XWBX="" DO
  1. .S XWBLINE=XWBLINE+1
  1. .S XWBY(XWBLINE)=XWBX_" / "_XWBARR(XWBX)
  1. Q
  1. ;
  1. LARRSTR ;Example of passing Array (mult) and String.
  1. N XWBIP,XWBPORT,XWBAV
  1. S XWBIP="",XWBPORT="",XWBAV=""
  1. D CLEARP
  1. S XWBPARMS("PARAMS",1,"TYPE")="ARRAY"
  1. S XWBPARMS("PARAMS",1,"VALUE","Raul")="Programmer"
  1. S XWBPARMS("PARAMS",1,"VALUE","Susan")="Tech Writter"
  1. S XWBPARMS("PARAMS",1,"VALUE","Dan")="Project Mgr"
  1. S XWBPARMS("PARAMS",2,"TYPE")="STRING"
  1. S XWBPARMS("PARAMS",2,"VALUE")="String and Array (MULT) TEST"
  1. I $G(XWBFLAG) D EN("XWB BROKER EXAMPLE","XWB M2M EXAMPLE LARRY") K XWBFLAG Q
  1. D USERIP Q:$G(XWBQUIT)
  1. D EN1("XWB BROKER EXAMPLE","XWB M2M EXAMPLE LARRY",XWBPORT,XWBIP,XWBAV)
  1. D CLEAN
  1. Q
  1. ;
  1. REF ;Example of passing a value by reference
  1. N XWBREF,Y,XWBSTR,XWBIP,XWBPORT,XWBAV
  1. S XWBIP="",XWBPORT="",XWBAV=""
  1. K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter Reference Value: ",DIR("B")="DT"
  1. D ^DIR I $D(DIRUT) Q
  1. S XWBREF=$$CHARCHK^XWBUTL(Y)
  1. D CLEARP
  1. D SETPARAM(1,"REF",XWBREF)
  1. I $G(XWBFLAG) D EN("XWB BROKER EXAMPLE","XWB M2M EXAMPLE REF") K XWBFLAG Q
  1. D USERIP Q:$G(XWBQUIT)
  1. D EN1("XWB BROKER EXAMPLE","XWB M2M EXAMPLE REF",XWBPORT,XWBIP,XWBAV)
  1. D CLEAN
  1. Q
  1. ;
  1. REFRP(RET,PARAM) ;Remote procedure for value passed by reference
  1. S RET(0)=PARAM
  1. Q
  1. ;
  1. USERIP ;Get IP,Port,AV from user for connection.
  1. N Y
  1. S XWBQUIT=0
  1. K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter IP: ",DIR("B")="127.0.0.1"
  1. D ^DIR I $D(DIRUT) S XWBQUIT=1 Q
  1. S XWBIP=Y
  1. K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter PORT: ",DIR("B")="9800"
  1. D ^DIR I $D(DIRUT) S XWBQUIT=1 Q
  1. S XWBPORT=Y
  1. K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter AV: ",DIR("?")="e.g. Smith;11PASSWORD!! "
  1. D ^DIR I $D(DIRUT) S XWBQUIT=1 Q
  1. S XWBAV=Y
  1. K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter CONTEXT: ",DIR("B")="XWB BROKER EXAMPLE"
  1. D ^DIR I $D(DIRUT) S XWBQUIT=1 Q
  1. S XWBCONTX=Y
  1. I $G(XWBREPFL) D
  1. .K DIR S DIR(0)="FAU^1:50",DIR("A")="Enter REPS: "
  1. .D ^DIR I $D(DIRUT) S XWBQUIT=1 Q
  1. .S XWBREPS=Y
  1. Q
  1. ;
  1. OPEN(PORT,IP,AV) ;Opens connection to server.
  1. ;S IP="127.0.0.1",PORT="9800",AV="QQQQ11;11ZZZZ.." ;Local
  1. ;S IP="10.4.229.21",PORT="9800",AV="2287CTD;11ZZZZ.." ;BayPines Cache
  1. S XWBSTATE("M2M","OPEN")=$$CONNECT^XWBM2MC(PORT,IP,AV)
  1. Q
  1. ;
  1. CLOSE ;Close the connection.
  1. S X=$$CLOSE^XWBM2MC()
  1. S XWBSTATE("M2M","OPEN")=0
  1. D CLEAN
  1. K X,XWBOPEN
  1. Q
  1. ;
  1. CLEARP ;Clear the PARAMS array
  1. I '$G(XWBDBUG) K XWBPARMS
  1. D PRE^XWBM2MC
  1. Q
  1. ;
  1. SETPARAM(INDEX,TYPE,VALUE) ;Set a Params entry
  1. S XWBPARMS("PARAMS",INDEX,"TYPE")=TYPE
  1. S XWBPARMS("PARAMS",INDEX,"VALUE")=VALUE
  1. Q
  1. ;
  1. CLNTMP ;Kills the TMP("XWB*"
  1. K ^TMP("XWBM2M"),^TMP("XWBM2MVLC"),^TMP("XWBM2MRPC"),^TMP("XWBM2MRL")
  1. K ^TMP("XWBM2ME"),^TMP("XWBM2M"),^TMP("XWBM2ML")
  1. Q
  1. ;
  1. CLEAN ;
  1. K REQ,XWBCONTX
  1. Q
  1. ;