| 1 | XOBUM1 ;; ld,mjk/alb - Foundations Manager ; 07/27/2002  13:00
 | 
|---|
| 2 |  ;;1.5;Foundations;;Sep 09, 2005
 | 
|---|
| 3 |  ;;Foundations Toolbox Release v1.5 [Build: 1.5.0.026]
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | START(XOBPORT) ;-- Entry point to start a single VistALink Listener
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ;  This procedure will start the VistALink Listener on a specific port.  The port number is optional
 | 
|---|
| 8 |  ;  and will be validated if passed to this procedure.  If the port is not passed, the user will be
 | 
|---|
| 9 |  ;  prompted for a port number.
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ;   Input:
 | 
|---|
| 12 |  ;     XOBPORT  - Port number for the Listener (optional)
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  ;  Output:
 | 
|---|
| 15 |  ;     None
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  NEW XOBTASK,Y,XOBOK
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ;-- Reset I/O variables
 | 
|---|
| 20 |  SET U="^" DO HOME^%ZIS
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  DO
 | 
|---|
| 23 |  . ;
 | 
|---|
| 24 |  . ;-- Check operating system
 | 
|---|
| 25 |  . IF '$$CHKOS() SET XOBOK=0 QUIT
 | 
|---|
| 26 |  . ;
 | 
|---|
| 27 |  . ;-- Validate/prompt for port
 | 
|---|
| 28 |  . IF '$$VALID($GET(XOBPORT)) SET XOBPORT=$$GETPORT("start")
 | 
|---|
| 29 |  . IF 'XOBPORT SET XOBOK=0 QUIT
 | 
|---|
| 30 |  . ;
 | 
|---|
| 31 |  . ;-- Wait msg to user
 | 
|---|
| 32 |  . DO WAIT^DICD WRITE !
 | 
|---|
| 33 |  . ;
 | 
|---|
| 34 |  . ;-- Check if Listener is running on port
 | 
|---|
| 35 |  . IF '$$LOCK^XOBVTCP(XOBPORT) DO  QUIT
 | 
|---|
| 36 |  . . DO EN^DDIOL("VistALink Listener on port "_XOBPORT_" appears to be running already.")
 | 
|---|
| 37 |  . . SET XOBOK=0
 | 
|---|
| 38 |  . ;
 | 
|---|
| 39 |  . ;-- Lock was successful; unlock and queue the listener to startup
 | 
|---|
| 40 |  . DO UNLOCK^XOBVTCP(XOBPORT)
 | 
|---|
| 41 |  . DO UPDATE^XOBVTCP(XOBPORT,1)
 | 
|---|
| 42 |  . SET XOBOK=$$START^XOBVTCP(XOBPORT)
 | 
|---|
| 43 |  . IF 'XOBOK DO
 | 
|---|
| 44 |  . . DO UPDATE^XOBVTCP(XOBPORT,5)
 | 
|---|
| 45 |  . . DO EN^DDIOL("Unable to start VistALink Listener on port "_XOBPORT_".")
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  QUIT XOBOK
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  ;
 | 
|---|
| 50 | CHKOS() ;-- Check operating system
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  ;  This function will determine which operating system is being used.
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  ;   Input:
 | 
|---|
| 55 |  ;     None
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 |  ;  Output:
 | 
|---|
| 58 |  ;     Function value - returns 1 on success, 0 on failure
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  NEW OPERSYS,RESULT
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  SET RESULT=0
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 |  ;-- Get operating system
 | 
|---|
| 65 |  SET OPERSYS=$$GETOS^XOBVTCP()
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 |  DO
 | 
|---|
| 68 |  . IF OPERSYS="OpenM-NT" DO  QUIT
 | 
|---|
| 69 |  .. DO EN^DDIOL("Starting VistALink Listener...")
 | 
|---|
| 70 |  .. SET RESULT=1
 | 
|---|
| 71 |  . ;
 | 
|---|
| 72 |  . IF OPERSYS["DSM" DO EN^DDIOL("Use the TCPIP utility in VMS to enable the VistALink Listener.") QUIT
 | 
|---|
| 73 |  . ;
 | 
|---|
| 74 |  . ;-- All other operating systems
 | 
|---|
| 75 |  . DO EN^DDIOL("Starting the VistALink Listener is not yet supported for "_OPERSYS_".") QUIT
 | 
|---|
| 76 |  . ;
 | 
|---|
| 77 |  QUIT RESULT
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 | VALID(XOBPORT) ;-- Validate port
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 |  ;  This function will validate a port number passed in.
 | 
|---|
| 83 |  ;  
 | 
|---|
| 84 |  ;   Input:
 | 
|---|
| 85 |  ;     XOBPORT  - Port number for the Listener (Optional)
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 |  ;  Output:
 | 
|---|
| 88 |  ;     Function value - returns 1 if valid, 0 otherwise
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 |  NEW RESULT
 | 
|---|
| 91 |  ;
 | 
|---|
| 92 |  SET XOBPORT=+$GET(XOBPORT)
 | 
|---|
| 93 |  SET RESULT=0
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 |  ;-- Check if port is not defined or invalid
 | 
|---|
| 96 |  DO  ; Drops out of block on failure
 | 
|---|
| 97 |  . QUIT:XOBPORT=0
 | 
|---|
| 98 |  . QUIT:(XOBPORT?.AP)
 | 
|---|
| 99 |  . QUIT:XOBPORT<5000!(XOBPORT>65535)
 | 
|---|
| 100 |  . SET RESULT=1
 | 
|---|
| 101 |  QUIT RESULT
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | GETPORT(XOBST) ;-- Prompt user for port number
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  ;  This function will prompt the user for a valid port number.
 | 
|---|
| 107 |  ;  
 | 
|---|
| 108 |  ;   Input:
 | 
|---|
| 109 |  ;     XOBST - start = start Listener
 | 
|---|
| 110 |  ;             stop  = stop Listener
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 |  ;  Output:
 | 
|---|
| 113 |  ;     Function value - returns port # or zero
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 |  NEW DIR,DIRUT,PORT
 | 
|---|
| 116 |  SET XOBST=$GET(XOBST)
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 |  SET DIR(0)="NA^5000:65535"
 | 
|---|
| 119 |  SET DIR("A")="Enter Port: "
 | 
|---|
| 120 |  SET DIR("B")=8000  ; Default port is 8000
 | 
|---|
| 121 |  SET DIR("?")="Choose a numeric port to "_XOBST_" the VistALink Listener on in the range of 5000-65535."
 | 
|---|
| 122 |  DO ^DIR KILL DIR
 | 
|---|
| 123 |  IF $DATA(DIRUT) DO
 | 
|---|
| 124 |  . DO EN^DDIOL("Port not specified.  VistALink Listener not "_$SELECT(XOBST="start":"started",1:"stopped")_".")
 | 
|---|
| 125 |  . SET PORT=0
 | 
|---|
| 126 |  ELSE  SET PORT=+$GET(Y)
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 |  QUIT PORT
 | 
|---|
| 129 |  ;
 | 
|---|
| 130 |  ;
 | 
|---|
| 131 | BOX() ; -- start this BOX-VOl default configuration
 | 
|---|
| 132 |  NEW XOBOX
 | 
|---|
| 133 |  IF $$CHKOS^XOBUM1() DO
 | 
|---|
| 134 |  . SET XOBOK=1
 | 
|---|
| 135 |  . DO WAIT^DICD WRITE !
 | 
|---|
| 136 |  . DO STARTCFG^XOBVTCP($$GETCFG^XOBVTCP())
 | 
|---|
| 137 |  ELSE  DO
 | 
|---|
| 138 |  . SET XOBOK=0
 | 
|---|
| 139 |  QUIT XOBOK
 | 
|---|
| 140 |  ;
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 | STOP(LOGDA) ; -- stop a listener
 | 
|---|
| 143 |  NEW Y,X,LOG0,XOBBOX,XOBPORT,XONCFG,XOBSTAT,XOBOK
 | 
|---|
| 144 |  SET XOBOK=0
 | 
|---|
| 145 |  ;
 | 
|---|
| 146 |  SET LOG0=$GET(^XOB(18.04,LOGDA,0))
 | 
|---|
| 147 |  SET XOBBOX=$PIECE(LOG0,U)
 | 
|---|
| 148 |  SET XOBPORT=$PIECE(LOG0,U,2)
 | 
|---|
| 149 |  SET XOBSTAT=$PIECE(LOG0,U,3)
 | 
|---|
| 150 |  SET XOBCFG=$PIECE(LOG0,U,6)
 | 
|---|
| 151 |  ; 
 | 
|---|
| 152 |  ; -- must be valid entyr with a running status
 | 
|---|
| 153 |  IF XOBPORT,XOBSTAT=2 DO
 | 
|---|
| 154 |  . DO UPDLOG^XOBVTCP(LOGDA,XOBPORT,3,XOBCFG)
 | 
|---|
| 155 |  . SET XOBOK=1
 | 
|---|
| 156 |  ELSE  DO
 | 
|---|
| 157 |  . SET XOBOK=0_U_"Listener is not running!"
 | 
|---|
| 158 |  ;
 | 
|---|
| 159 |  QUIT XOBOK
 | 
|---|
| 160 |  ;
 | 
|---|
| 161 | PARMS() ; -- maintain site parameters
 | 
|---|
| 162 |  NEW DIC,X,Y,DR,DA,DIE,XOBOK
 | 
|---|
| 163 |  SET XOBOK=0
 | 
|---|
| 164 |  ;
 | 
|---|
| 165 |  IF $GET(^XOB(18.01,1,0))["" DO
 | 
|---|
| 166 |  . SET DA=1,DR="[XOBU SITE PARAMETERS]",DIE="^XOB(18.01," DO ^DIE
 | 
|---|
| 167 |  . SET XOBOK=1
 | 
|---|
| 168 |  ELSE  DO
 | 
|---|
| 169 |  . SET XOBOK=0_U_"Error: Site parameter file not initialized."
 | 
|---|
| 170 |  ;
 | 
|---|
| 171 |  QUIT XOBOK
 | 
|---|
| 172 |  ;
 | 
|---|
| 173 | CFG() ; -- listener configuration edit
 | 
|---|
| 174 |  NEW DIC,X,Y,DR,DA,DIE,XOBDONE,XOBOK
 | 
|---|
| 175 |  SET XOBOK=0
 | 
|---|
| 176 |  ;
 | 
|---|
| 177 |  SET XOBDONE=0
 | 
|---|
| 178 |  ;
 | 
|---|
| 179 |  FOR   DO  QUIT:XOBDONE
 | 
|---|
| 180 |  . WRITE !
 | 
|---|
| 181 |  . SET DIC="^XOB(18.03,",DIC(0)="AEMLQ" DO ^DIC
 | 
|---|
| 182 |  . IF Y<1 SET XOBDONE=1 QUIT
 | 
|---|
| 183 |  . SET DA=+Y,DR="[XOBV LISTENER CONFIG EDIT]",DIE="^XOB(18.03," DO ^DIE
 | 
|---|
| 184 |  SET XOBOK=1
 | 
|---|
| 185 |  ;
 | 
|---|
| 186 |  QUIT XOBOK
 | 
|---|
| 187 |  ;
 | 
|---|
| 188 | CP() ; -- add a connector proxy
 | 
|---|
| 189 |  NEW XOBOK
 | 
|---|
| 190 |  SET XOBOK=0
 | 
|---|
| 191 |  DO CONT^XUSAP
 | 
|---|
| 192 |  SET XOBOK=1
 | 
|---|
| 193 |  QUIT XOBOK
 | 
|---|
| 194 |  ;
 | 
|---|