| 1 | XWBRMX ;OIFO-Oakland/REM - M2M Broker Server Request Mgr  ;05/17/2002  17:41 | 
|---|
| 2 | ;;1.1;RPC BROKER;**28**;Mar 28, 1997 | 
|---|
| 3 | ; | 
|---|
| 4 | QUIT | 
|---|
| 5 | ;---------------------------------------------------------------------- | 
|---|
| 6 | ; | 
|---|
| 7 | ;    Request Manager -Parse XML Requests using SAX interface | 
|---|
| 8 | ; | 
|---|
| 9 | ;---------------------------------------------------------------------- | 
|---|
| 10 | ; | 
|---|
| 11 | EN(DOC,XWBOPT,XWBDATA) ; -- Parse XML uses SAX parser | 
|---|
| 12 | N XWBCBK,XWBINVAL | 
|---|
| 13 | SET XWBINVAL="#UNKNOWN#" | 
|---|
| 14 | ; | 
|---|
| 15 | SET XWBDATA("DUZ")=XWBINVAL ;**M2M don't need duz | 
|---|
| 16 | SET XWBDATA("SECTOKEN")=XWBINVAL | 
|---|
| 17 | DO SET(.XWBCBK) | 
|---|
| 18 | DO EN^MXMLPRSE(DOC,.XWBCBK,.XWBOPT) | 
|---|
| 19 | ; | 
|---|
| 20 | ;;D ^%ZTER | 
|---|
| 21 | ; | 
|---|
| 22 | ENQ Q | 
|---|
| 23 | ; | 
|---|
| 24 | SET(CBK) ; -- set the event interface entry points | 
|---|
| 25 | SET XWBCBK("STARTELEMENT")="ELEST^XWBRMX" | 
|---|
| 26 | SET XWBCBK("ENDELEMENT")="ELEND^XWBRMX" | 
|---|
| 27 | SET XWBCBK("CHARACTERS")="CHR^XWBRMX" | 
|---|
| 28 | QUIT | 
|---|
| 29 | ; | 
|---|
| 30 | ESC(X) ; -- convert special characters to \x format | 
|---|
| 31 | Q X | 
|---|
| 32 | ; | 
|---|
| 33 | N C,Y,Z | 
|---|
| 34 | F Z=1:1 S C=$E(X,Z) Q:C=""  D | 
|---|
| 35 | .S Y=$TR(C,$C(9,10,13,92),"tnc") | 
|---|
| 36 | .S:C'=Y $E(X,Z)="" ;$S(Y="":"\\",1:"\"_Y),Z=Z+1 | 
|---|
| 37 | Q X | 
|---|
| 38 | ; | 
|---|
| 39 | ELEST(ELE,ATR) ; -- element start | 
|---|
| 40 | IF ELE="vistalink",$G(ATR("type"))="Gov.VA.Med.RPC.Request" DO | 
|---|
| 41 | . SET XWBDATA("APP")="RPC" | 
|---|
| 42 | . ;SET XWBDATA("MODE")=$G(ATR("mode"),"singleton") ;Comment out for M2M | 
|---|
| 43 | . SET XWBDATA("MODE")=$G(ATR("mode"),"RPCBroker") ;M2M change to RPCBroker | 
|---|
| 44 | ; | 
|---|
| 45 | IF ELE="vistalink",$G(ATR("type"))="Gov.VA.Med.Foundations.CloseSocketRequest" DO  QUIT | 
|---|
| 46 | . SET XWBDATA("APP")="CLOSE" | 
|---|
| 47 | . SET XWBDATA("MODE")=$G(ATR("mode"),"single call") | 
|---|
| 48 | ; | 
|---|
| 49 | IF ELE="session" SET XWBSESS=1 QUIT | 
|---|
| 50 | ; -- set session vars here so apps can use during xml parsing | 
|---|
| 51 | ; | 
|---|
| 52 | ;*M2M - check for RPCBroker | 
|---|
| 53 | IF $G(XWBSESS) DO  QUIT | 
|---|
| 54 | .IF ELE="duz" SET (DUZ,XWBDATA("DUZ"))=$G(ATR("value")) IF +DUZ=0 SET (DUZ,XWBDATA("DUZ"))=XWBINVAL QUIT | 
|---|
| 55 | . IF $G(XWBSEC) DO  QUIT | 
|---|
| 56 | . . IF ELE="token" SET XWBDATA("SECTOKEN")=$G(ATR("value")) IF XWBDATA("SECTOKEN")="" SET XWBDATA("SECTOKEN")=XWBINVAL QUIT | 
|---|
| 57 | . IF ELE="security" SET XWBSEC=1 QUIT | 
|---|
| 58 | ; | 
|---|
| 59 | ; -- // TODO: make dynamic off RPC app config | 
|---|
| 60 | IF $GET(XWBDATA("APP"))="RPC" DO ELEST^XWBRPC(.ELE,.ATR) | 
|---|
| 61 | Q | 
|---|
| 62 | ; | 
|---|
| 63 | ELEND(ELE) ; -- element end | 
|---|
| 64 | IF ELE="session" KILL XWBSESS QUIT | 
|---|
| 65 | IF $G(XWBSESS) DO  QUIT | 
|---|
| 66 | . IF ELE="security" KILL XWBSEC | 
|---|
| 67 | ; | 
|---|
| 68 | ; | 
|---|
| 69 | ; -- // TODO: make dynamic off RPC app config | 
|---|
| 70 | IF $G(XWBDATA("APP"))="RPC" DO ELEND^XWBRPC(.ELE) | 
|---|
| 71 | Q | 
|---|
| 72 | ; | 
|---|
| 73 | CHR(TXT) ; | 
|---|
| 74 | ; -- // TODO:  make dynamic off RPC app config | 
|---|
| 75 | IF $G(XWBDATA("APP"))="RPC" DO CHR^XWBRPC(.TXT) | 
|---|
| 76 | Q | 
|---|
| 77 | ; | 
|---|