| 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 | 
|---|