75 lines
2.3 KiB
Mathematica
75 lines
2.3 KiB
Mathematica
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")
|