| 1 | XOBVPOST ;; ld,mjk/alb - VistaLink Post-Init ; 07/27/2002  13:00
 | 
|---|
| 2 |  ;;1.5;VistALink;;Sep 09, 2005
 | 
|---|
| 3 |  ;;Foundations Toolbox Release v1.5 [Build: 1.5.0.026]
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  QUIT
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | EN ; -- add post-init code here
 | 
|---|
| 8 |  NEW XOBCFG,XOBOS
 | 
|---|
| 9 |  SET XOBOS=$$GETOS^XOBVTCP()
 | 
|---|
| 10 |  SET XOBCFG=0
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  ; -- add config if Cache NT
 | 
|---|
| 13 |  IF XOBOS="OpenM-NT" SET XOBCFG=$$CFG()
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ; -- add params entry
 | 
|---|
| 16 |  DO PARMS(XOBCFG)
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  ; -- add STARTUP task if OpenM-NT and on Windows
 | 
|---|
| 19 |  IF XOBOS="OpenM-NT",$$SYSOS^XOBVLIB(XOBOS)="NT" DO SCHEDOPT
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  ; -- add XOBVTESTER,APPLICATION PROXY user if not present
 | 
|---|
| 22 |  DO ADDPROXY("XOBVTESTER,APPLICATION PROXY")
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  QUIT
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 | CFG() ; -- add default config if not pressent
 | 
|---|
| 28 |  NEW DIC,X,Y,XOBDA,XOBNEW
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  ; -- DEFAULT configuration --
 | 
|---|
| 31 |  SET DIC="^XOB(18.03,"
 | 
|---|
| 32 |  SET DIC(0)="LX"
 | 
|---|
| 33 |  SET X="DEFAULT"
 | 
|---|
| 34 |  DO ^DIC
 | 
|---|
| 35 |  ; -- quit if lookup failed
 | 
|---|
| 36 |  IF Y=-1 GOTO CFGQ
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 |  SET XOBDA=+Y
 | 
|---|
| 39 |  SET XOBNEW=$PIECE(Y,U,3)
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  ; -- add default port to multiple
 | 
|---|
| 42 |  IF XOBNEW,'$$PORTS(XOBDA) GOTO CFGQ
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 | CFGQ ;
 | 
|---|
| 45 |  QUIT +$GET(XOBDA)
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 | PORTS(XOBDA) ; -- add 8000 port
 | 
|---|
| 49 |  NEW XOBOK,XOBNEW,DIC,DIE,DR,X,DA,Y
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  ; -- set oth of multiple is needed
 | 
|---|
| 52 |  IF $DATA(^XOB(18.03,1,"PORTS",0))=0 SET ^XOB(18.03,1,"PORTS",0)="^18.031^^"
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  SET DA(1)=XOBDA
 | 
|---|
| 55 |  SET DIC="^XOB(18.03,"_XOBDA_",""PORTS"","
 | 
|---|
| 56 |  SET DIC(0)="LX"
 | 
|---|
| 57 |  SET X=8000
 | 
|---|
| 58 |  DO ^DIC
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  ; -- quit if lookup failed
 | 
|---|
| 61 |  IF Y=-1 SET XOBOK=0 GOTO PORTSQ
 | 
|---|
| 62 |  SET XOBNEW=$PIECE(Y,U,3)
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 |  ; -- if multiple entry is new, set port to NOT startup when config is started
 | 
|---|
| 65 |  ;    (site should change to startup explicitly)
 | 
|---|
| 66 |  IF XOBNEW DO
 | 
|---|
| 67 |  . SET DA(1)=XOBDA
 | 
|---|
| 68 |  . SET DA=+Y
 | 
|---|
| 69 |  . SET DR=".02////0"
 | 
|---|
| 70 |  . SET DIE="^XOB(18.03,"_XOBDA_",""PORTS"","
 | 
|---|
| 71 |  . DO ^DIE
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 |  SET XOBOK=1
 | 
|---|
| 74 | PORTSQ ;
 | 
|---|
| 75 |  QUIT XOBOK
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 | PARMS(XOBCFG) ; -- add parameter entry
 | 
|---|
| 79 |  NEW DIC,X,Y,DIE,DA,DR,XOBBOX,XOBDA,XOBMULI,XOBNEW
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 |  ; -- box-pair name, no ien
 | 
|---|
| 82 |  SET XOBBOX=$PIECE($$GETENV^XOBVTCP(),U,4)
 | 
|---|
| 83 |  ; 
 | 
|---|
| 84 |  ; -- Top-Level Parameters --
 | 
|---|
| 85 |  SET DIC="^XOB(18.01,",DIC(0)="LXZ",X=$$DOMAIN() DO ^DIC
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 |  ; -- quit if lookup failed or if already exists
 | 
|---|
| 88 |  IF Y=-1 GOTO PARMSQ
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 |  SET XOBDA=+Y
 | 
|---|
| 91 |  SET XOBNEW=0
 | 
|---|
| 92 |  IF $PIECE(Y(0),U,2)="",$PIECE(Y(0),U,3)="" SET XOBNEW=1
 | 
|---|
| 93 |  ;
 | 
|---|
| 94 |  ; -- set basic parameters (HEARTBEAT RATE and LATENCY DELTA)
 | 
|---|
| 95 |  IF XOBNEW DO
 | 
|---|
| 96 |  . SET DA=XOBDA
 | 
|---|
| 97 |  . SET DR=".02////180;.03////180"
 | 
|---|
| 98 |  . SET DIE="^XOB(18.01,"
 | 
|---|
| 99 |  . DO ^DIE
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 |  ; -- Listeners Multiple --
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  ; -- quit if no config passed in (ie. not Cache NT) 
 | 
|---|
| 104 |  IF '$GET(XOBCFG) GOTO PARMSQ
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  ; -- set oth of multiple is needed
 | 
|---|
| 107 |  IF $DATA(^XOB(18.01,1,"CONFIG",0))=0 SET ^XOB(18.01,1,"CONFIG",0)="^18.012P^^"
 | 
|---|
| 108 |  ;
 | 
|---|
| 109 |  SET DA(1)=XOBDA
 | 
|---|
| 110 |  SET DIC="^XOB(18.01,"_XOBDA_",""CONFIG"","
 | 
|---|
| 111 |  SET DIC(0)="LX"
 | 
|---|
| 112 |  SET X=XOBBOX
 | 
|---|
| 113 |  DO ^DIC
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 |  ; -- quit if lookup failed or if already exists
 | 
|---|
| 116 |  IF Y=-1 GOTO PARMSQ
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 |  SET XOBMULI=+Y
 | 
|---|
| 119 |  SET XOBNEW=$PIECE(Y,U,3)
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 |  ; -- set listener config default
 | 
|---|
| 122 |  IF XOBNEW DO
 | 
|---|
| 123 |  . SET DA(1)=XOBDA
 | 
|---|
| 124 |  . SET DA=XOBMULI
 | 
|---|
| 125 |  . SET DR=".02////"_XOBCFG
 | 
|---|
| 126 |  . SET DIE="^XOB(18.01,"_XOBDA_",""CONFIG"","
 | 
|---|
| 127 |  . DO ^DIE
 | 
|---|
| 128 |  ;
 | 
|---|
| 129 | PARMSQ ;
 | 
|---|
| 130 |  QUIT
 | 
|---|
| 131 |  ;
 | 
|---|
| 132 |  ;
 | 
|---|
| 133 | DOMAIN() ; -- get account's domain entry
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 |  QUIT $$KSP^XUPARAM("WHERE")
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 |  ;
 | 
|---|
| 138 | SCHEDOPT ;-- Schedule XOBV LISTENER STARTUP option in TaskMan
 | 
|---|
| 139 |  ;
 | 
|---|
| 140 |  ;  This procedure will schedule the XOBV LISTENER STARTUP option
 | 
|---|
| 141 |  ;  in the OPTION SCHEDULING file (#19.2).
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 |  NEW XOBMSG,XOBOIEN,XOBSIEN
 | 
|---|
| 144 |  ;
 | 
|---|
| 145 |  ;-- XOBOIEN = IEN (OPTION file), XOBSIEN = IEN (OPTION SCHEDULING file)
 | 
|---|
| 146 |  SET (XOBOIEN,XOBSIEN)=0
 | 
|---|
| 147 |  ;
 | 
|---|
| 148 |  DO BMES^XPDUTL(">>> Scheduling the XOBV LISTENER STARTUP option...")
 | 
|---|
| 149 |  ;
 | 
|---|
| 150 |  ;-- Check that option was added to OPTION file #19 during installation
 | 
|---|
| 151 |  SET XOBOIEN=$$FIND1^DIC(19,"","BX","XOBV LISTENER STARTUP","","","")
 | 
|---|
| 152 |  ;
 | 
|---|
| 153 |  ;-- Error XOBMSG and quit if option was not added
 | 
|---|
| 154 |  IF 'XOBOIEN DO  QUIT
 | 
|---|
| 155 |  . SET XOBMSG(1)=""
 | 
|---|
| 156 |  . SET XOBMSG(2)=">>> Error: Option XOBV LISTENER STARTUP was not created in the OPTION (#19)"
 | 
|---|
| 157 |  . SET XOBMSG(3)="           file during the KIDS installation.  Please reinstall."
 | 
|---|
| 158 |  . DO BMES^XPDUTL(.XOBMSG)
 | 
|---|
| 159 |  ;
 | 
|---|
| 160 |  ;-- Check if option was already scheduled
 | 
|---|
| 161 |  SET XOBSIEN=$$CHKOPT(XOBOIEN)
 | 
|---|
| 162 |  ;
 | 
|---|
| 163 |  ;-- Display option and quit if option was previously added
 | 
|---|
| 164 |  IF XOBSIEN DO  QUIT
 | 
|---|
| 165 |  . DO BMES^XPDUTL(">>> The XOBV LISTENER STARTUP option has previously been scheduled:")
 | 
|---|
| 166 |  . DO DSPLYOP(XOBSIEN)
 | 
|---|
| 167 |  ;
 | 
|---|
| 168 |  ;-- Schedule the option
 | 
|---|
| 169 |  SET XOBSIEN=$$FILEOPT(XOBSIEN,XOBOIEN,,,,"S")
 | 
|---|
| 170 |  IF XOBSIEN DO
 | 
|---|
| 171 |  . DO BMES^XPDUTL(">>> The XOBV LISTENER STARTUP option has been scheduled as follows:")
 | 
|---|
| 172 |  . DO DSPLYOP(XOBSIEN)
 | 
|---|
| 173 |  ELSE  DO
 | 
|---|
| 174 |  . SET XOBMSG(1)=">>> Error: There was an error scheduling the XOBV LISTENER STARTUP option."
 | 
|---|
| 175 |  . SET XOBMSG(2)="           Please schedule this option using 'Schedule/Unschedule Options'"
 | 
|---|
| 176 |  . SET XOBMSG(3)="           in the Taskman Management menu."
 | 
|---|
| 177 |  . DO BMES^XPDUTL(.XOBMSG)
 | 
|---|
| 178 |  QUIT
 | 
|---|
| 179 |  ;
 | 
|---|
| 180 |  ;
 | 
|---|
| 181 | CHKOPT(IEN) ;-- Check if option is already scheduled
 | 
|---|
| 182 |  ;
 | 
|---|
| 183 |  ;  Input:
 | 
|---|
| 184 |  ;    IEN     -  IEN of option in OPTION file (#19)
 | 
|---|
| 185 |  ;
 | 
|---|
| 186 |  ; Output:
 | 
|---|
| 187 |  ;    XOBSIEN -  IEN of option in OPTION SCHEDULING file (#19.2) or zero if it does not exist
 | 
|---|
| 188 |  ;
 | 
|---|
| 189 |  NEW X,X1,X2,XOBARY,XOBI,XOBIEN2
 | 
|---|
| 190 |  SET (X1,X2,XOBI,XOBIEN2)=0
 | 
|---|
| 191 |  DO FIND^DIC(19.2,"","@;.01I;9I","","XOBV LISTENER STARTUP","*","B","","","XOBARY")
 | 
|---|
| 192 |  SET X=+$PIECE($GET(XOBARY("DILIST",0)),"^")
 | 
|---|
| 193 |  FOR  SET XOBI=$ORDER(XOBARY("DILIST","ID",X,XOBI)) QUIT:'XOBI  DO
 | 
|---|
| 194 |  . IF XOBI=.01,$GET(XOBARY("DILIST","ID",X,XOBI))=IEN SET X1=1
 | 
|---|
| 195 |  . IF XOBI=9,$GET(XOBARY("DILIST","ID",X,XOBI))["S" SET X2=1
 | 
|---|
| 196 |  . IF X1,X2 SET XOBIEN2=+$GET(XOBARY("DILIST",2,X))
 | 
|---|
| 197 |  QUIT XOBIEN2
 | 
|---|
| 198 |  ;
 | 
|---|
| 199 |  ;
 | 
|---|
| 200 | DSPLYOP(IEN) ;-- Display fields from OPTION SCHEDULING file (#19.2)
 | 
|---|
| 201 |  ;
 | 
|---|
| 202 |  ;  Input:
 | 
|---|
| 203 |  ;    IEN  -  IEN of record in file #19.2
 | 
|---|
| 204 |  ;
 | 
|---|
| 205 |  ; Output:
 | 
|---|
| 206 |  ;    Display of fields in record
 | 
|---|
| 207 |  ;
 | 
|---|
| 208 |  QUIT:'$GET(IEN)
 | 
|---|
| 209 |  NEW DA,DIC,DIQ
 | 
|---|
| 210 |  SET DIC="^DIC(19.2,",DA=IEN,DIQ(0)="CAR"
 | 
|---|
| 211 |  DO MES^XPDUTL("")
 | 
|---|
| 212 |  DO EN^DIQ
 | 
|---|
| 213 |  DO BMES^XPDUTL("")
 | 
|---|
| 214 |  QUIT
 | 
|---|
| 215 |  ;
 | 
|---|
| 216 |  ;
 | 
|---|
| 217 | FILEOPT(XOBIEN,XOBOPT,XOBQUE,XOBDEV,XOBRSCH,XOBSPARM)   ;-- Schedule the option
 | 
|---|
| 218 |  ;
 | 
|---|
| 219 |  ;-- File a new record in file #19.2 or edit existing
 | 
|---|
| 220 |  ;
 | 
|---|
| 221 |  ;  Input:
 | 
|---|
| 222 |  ;    XOBIEN   -   IEN from record in file #19.2 if it exists
 | 
|---|
| 223 |  ;    XOBOPT   -   IEN of option (file #19); (required)
 | 
|---|
| 224 |  ;    XOBQUE   -   Queued to run at what time; (optional)
 | 
|---|
| 225 |  ;    XOBDEV   -   Device for queued job output; (optional)
 | 
|---|
| 226 |  ;    XOBRSCH  -   Rescheduling frequency; (optional)
 | 
|---|
| 227 |  ;    XOBSPARM -   Special queueing; (optional)
 | 
|---|
| 228 |  ;
 | 
|---|
| 229 |  ; Output:
 | 
|---|
| 230 |  ;    Function Value - Returns IEN of record on success, 0 on failure
 | 
|---|
| 231 |  ;
 | 
|---|
| 232 |  NEW XOBFDA,XOBFDAI,XOBERR,XOBIENS
 | 
|---|
| 233 |  ;
 | 
|---|
| 234 |  SET XOBIEN=+$GET(XOBIEN)
 | 
|---|
| 235 |  ;
 | 
|---|
| 236 |  ;-- If record doesn't already exist, create new
 | 
|---|
| 237 |  IF XOBIEN SET XOBIENS=XOBIEN_","
 | 
|---|
| 238 |  ELSE  SET XOBIENS="+1,"
 | 
|---|
| 239 |  ;
 | 
|---|
| 240 |  ;-- Set up array with field values
 | 
|---|
| 241 |  SET XOBFDA(19.2,XOBIENS,.01)=$GET(XOBOPT)
 | 
|---|
| 242 |  SET XOBFDA(19.2,XOBIENS,2)=$GET(XOBQUE)
 | 
|---|
| 243 |  SET XOBFDA(19.2,XOBIENS,3)=$GET(XOBDEV)
 | 
|---|
| 244 |  SET XOBFDA(19.2,XOBIENS,6)=$GET(XOBRSCH)
 | 
|---|
| 245 |  SET XOBFDA(19.2,XOBIENS,9)=$GET(XOBSPARM)
 | 
|---|
| 246 |  ;
 | 
|---|
| 247 |  IF XOBIEN DO
 | 
|---|
| 248 |  . DO FILE^DIE("","XOBFDA","XOBERR")
 | 
|---|
| 249 |  . IF $DATA(XOBERR) SET XOBIEN=0
 | 
|---|
| 250 |  ELSE  DO
 | 
|---|
| 251 |  . DO UPDATE^DIE("","XOBFDA","XOBFDAI","XOBERR")
 | 
|---|
| 252 |  . IF '$DATA(XOBERR) SET XOBIEN=$GET(XOBFDAI(1))
 | 
|---|
| 253 |  ;
 | 
|---|
| 254 |  QUIT $SELECT($GET(XOBIEN)>0:XOBIEN,1:0)
 | 
|---|
| 255 |  ;
 | 
|---|
| 256 | ADDPROXY(XOBANAME) ; add application proxy if not present
 | 
|---|
| 257 |  ; depends on XU*8*361
 | 
|---|
| 258 |  NEW XOBID,XOBMSG,XOBSUBER,XOBSUBTX,XOBLINE
 | 
|---|
| 259 |  ;
 | 
|---|
| 260 |  ; if already present don't add
 | 
|---|
| 261 |  QUIT:(+$$APFIND^XUSAP(XOBANAME))>0
 | 
|---|
| 262 |  ;
 | 
|---|
| 263 |  SET XOBID=$$CREATE^XUSAP(XOBANAME,"","XOBV VISTALINK TESTER")
 | 
|---|
| 264 |  IF (+XOBID)>0 DO
 | 
|---|
| 265 |  . SET XOBMSG(1)=" Added new Kernel Application Proxy User '"_XOBANAME_"'."
 | 
|---|
| 266 |  . SET XOBMSG(2)="  ::This application proxy user account is used in the VistALink sample web"
 | 
|---|
| 267 |  . SET XOBMSG(3)="  ::application, to demonstrate usage of the VistaLinkAppProxyConnectionSpec"
 | 
|---|
| 268 |  . SET XOBMSG(4)="  ::connection spec."
 | 
|---|
| 269 |  . DO BMES^XPDUTL(.XOBMSG)
 | 
|---|
| 270 |  IF (+XOBID)=0 DO
 | 
|---|
| 271 |  . ; already checked if user present, should never get 0 back
 | 
|---|
| 272 |  . SET XOBMSG(1)=">>> Error: Could not add VistALink Application Proxy User '"_XOBANAME_"' -- Already exists."
 | 
|---|
| 273 |  . DO BMES^XPDUTL(.XOBMSG)
 | 
|---|
| 274 |  IF (+XOBID)<0 DO
 | 
|---|
| 275 |  . SET XOBMSG(1)=">>> Error: Could not add VistALink Application Proxy User '"_XOBANAME_"'."
 | 
|---|
| 276 |  . SET XOBMSG(2)="    DIERR nodes: <start of error(s)>"
 | 
|---|
| 277 |  . SET XOBLINE=3,XOBSUBER=0 FOR  SET XOBSUBER=$O(^TMP("DIERR",$J,XOBSUBER)) QUIT:(+XOBSUBER)'>0  DO
 | 
|---|
| 278 |  . . SET XOBMSG(XOBLINE)="    "_^TMP("DIERR",$J,XOBSUBER),XOBLINE=XOBLINE+1
 | 
|---|
| 279 |  . . SET XOBSUBTX=0 FOR  SET XOBSUBTX=$O(^TMP("DIERR",$J,XOBSUBER,"TEXT",XOBSUBTX)) QUIT:(+XOBSUBTX)'>0  DO
 | 
|---|
| 280 |  . . . SET XOBMSG(XOBLINE)="    "_^TMP("DIERR",$J,XOBSUBER,"TEXT",XOBSUBTX),XOBLINE=XOBLINE+1
 | 
|---|
| 281 |  . SET XOBMSG(XOBLINE+1)="    <end of error(s)>"
 | 
|---|
| 282 |  . DO BMES^XPDUTL(.XOBMSG)
 | 
|---|
| 283 |  . K ^TMP("DIERR",$J)
 | 
|---|
| 284 |  ;
 | 
|---|
| 285 |  QUIT
 | 
|---|