VistA-FOIAVistA/r/KERNEL-XU-A4A7-USC-XG-XLF-X.../XUSC1.m

75 lines
2.3 KiB
Mathematica
Raw Normal View History

XUSC1 ;SFISC/RWF - Interface to Server services. ;10/09/2002 16:53
;;8.0;KERNEL;**283**;Jul 10, 1995
;XUSC("STAT") is used to pass subroutine status around.
;The entry points EN, OPEN, DATA, CLOSE are supported ref.
;Calls a server service on a port depending on service.
;Service:port; "ECHO":10250, "CRC32":10255, "SHA1":10260, "DSIG":10265,1:23)
;Return 0 = OK, else -1^msg
EN(XUSC3,XUSC1,XUSC2) ;
;XUSC3 is the service we want.
;XUSC1 input data array
;XUSC2 return data array.
N %,R,XUSC ;XUSC holds data not passed as a parameter.
I "DSIG/ECHO/SHA1/DES/CRC32/CRL /"'[XUSC3 S R="-1^Bad service" G EXIT
D SAVDEV^%ZISUTL("XUSC-HOME"),IP
I $G(XUSC("IP"))="" S R="-1^Server not defined" G EXIT
S R=$$EN^XUSC1C(XUSC1,XUSC2,$G(XUSC3,"MPI"))
EXIT D USE^%ZISUTL("XUSC-HOME"),RMDEV^%ZISUTL("XUSC-HOME")
Q R
;
OPEN(XUSCITE) ;Open Connection, Setup
K XUSC N R
D IP(XUSCITE),SAVDEV^%ZISUTL("XUSC-HOME")
I $G(XUSC("IP"))="" Q "-1^Bad site"
D SETUP^XUSC1C S XUSC("HOME")=IO
N $ESTACK,$ETRAP S $ETRAP="D ERROR^XUSC1C"
D OPEN^XUSC1C I 'XUSC("STAT") D SAVDEV^%ZISUTL("XUSC-IP") U IO D HELO^XUSC1C
D USE^%ZISUTL("XUSC-HOME")
Q $S('XUSC("STAT"):0,1:XUSC("STAT"))
;
DATA(INPUT,OUTPUT,TYPE) ;Pass Data, Get Responce
S XUSC("STAT")=0 D USE^%ZISUTL("XUSC-IP")
D DATA^XUSC1C G:XUSC("STAT") ERR
D TURN^XUSC1C G:XUSC("STAT") ERR
D GET^XUSC1C G:XUSC("STAT") ERR
D USE^%ZISUTL("XUSC-HOME")
Q 0
;
CLOSE() ;Close connection
D USE^%ZISUTL("XUSC-IP"),QUIT^XUSC1C,USE^%ZISUTL("XUSC-HOME")
D RMDEV^%ZISUTL("XUSC-IP"),RMDEV^%ZISUTL("XUSC-HOME")
K XUSC Q 0
;
ERR ;Report an error
D TRACE^XUSC1C("ERROR "_XUSC("STAT"))
D QUIT^XUSC1C,USE^%ZISUTL("XUSC-HOME")
Q XUSC("STAT")
;
IP ;Lookup name pass back parameters in XUSC
N %,XUSCY,XUSCE
S %=$P(XUSC3," ") D
. I $L($T(@%)) D @% Q
. D ASK Q
Q
;
DSIG S XUSC("IP")=$P($G(^XTV(8989.3,1,"IP1")),"^",1)
S XUSC("SOCK")=10265
Q
CRL S XUSC("IP")=$P($G(^XTV(8989.3,1,"IP1")),"^",1)
S XUSC("SOCK")=10270
Q
SHA1 S XUSC("IP")=$P($G(^XTV(8989.3,1,"IP1")),"^",1)
S XUSC("SOCK")=10260
Q
ASK ; ASK USER FOR IP AND PORT
S XUSC("IP")="",XUSC("SOCK")=""
R !,"IP Address to use: ",%:DTIME Q:"^"[% S XUSC("IP")=%
R !," Port TO use: ",%:DTIME Q:"^"[% S XUSC("SOCK")=%
Q
;
NOOP() ;
S XUSC("STAT")=0 D USE^%ZISUTL("XUSC-IP")
S XUSC("OK")=$$POST^XUSC1C("NOOP")
D USE^%ZISUTL("XUSC-HOME")
Q XUSC("OK")