Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: XOBVPOST

XOBVPOST.m

Go to the documentation of this file.
  1. XOBVPOST ;; ld,mjk/alb - VistaLink Post-Init ; 07/27/2002 13:00
  1. ;;1.5;VistALink;;Sep 09, 2005
  1. ;;Foundations Toolbox Release v1.5 [Build: 1.5.0.026]
  1. ;
  1. QUIT
  1. ;
  1. EN ; -- add post-init code here
  1. NEW XOBCFG,XOBOS
  1. SET XOBOS=$$GETOS^XOBVTCP()
  1. SET XOBCFG=0
  1. ;
  1. ; -- add config if Cache NT
  1. IF XOBOS="OpenM-NT" SET XOBCFG=$$CFG()
  1. ;
  1. ; -- add params entry
  1. DO PARMS(XOBCFG)
  1. ;
  1. ; -- add STARTUP task if OpenM-NT and on Windows
  1. IF XOBOS="OpenM-NT",$$SYSOS^XOBVLIB(XOBOS)="NT" DO SCHEDOPT
  1. ;
  1. ; -- add XOBVTESTER,APPLICATION PROXY user if not present
  1. DO ADDPROXY("XOBVTESTER,APPLICATION PROXY")
  1. ;
  1. QUIT
  1. ;
  1. ;
  1. CFG() ; -- add default config if not pressent
  1. NEW DIC,X,Y,XOBDA,XOBNEW
  1. ;
  1. ; -- DEFAULT configuration --
  1. SET DIC="^XOB(18.03,"
  1. SET DIC(0)="LX"
  1. SET X="DEFAULT"
  1. DO ^DIC
  1. ; -- quit if lookup failed
  1. IF Y=-1 GOTO CFGQ
  1. ;
  1. SET XOBDA=+Y
  1. SET XOBNEW=$PIECE(Y,U,3)
  1. ;
  1. ; -- add default port to multiple
  1. IF XOBNEW,'$$PORTS(XOBDA) GOTO CFGQ
  1. ;
  1. CFGQ ;
  1. QUIT +$GET(XOBDA)
  1. ;
  1. ;
  1. PORTS(XOBDA) ; -- add 8000 port
  1. NEW XOBOK,XOBNEW,DIC,DIE,DR,X,DA,Y
  1. ;
  1. ; -- set oth of multiple is needed
  1. IF $DATA(^XOB(18.03,1,"PORTS",0))=0 SET ^XOB(18.03,1,"PORTS",0)="^18.031^^"
  1. ;
  1. SET DA(1)=XOBDA
  1. SET DIC="^XOB(18.03,"_XOBDA_",""PORTS"","
  1. SET DIC(0)="LX"
  1. SET X=8000
  1. DO ^DIC
  1. ;
  1. ; -- quit if lookup failed
  1. IF Y=-1 SET XOBOK=0 GOTO PORTSQ
  1. SET XOBNEW=$PIECE(Y,U,3)
  1. ;
  1. ; -- if multiple entry is new, set port to NOT startup when config is started
  1. ; (site should change to startup explicitly)
  1. IF XOBNEW DO
  1. . SET DA(1)=XOBDA
  1. . SET DA=+Y
  1. . SET DR=".02////0"
  1. . SET DIE="^XOB(18.03,"_XOBDA_",""PORTS"","
  1. . DO ^DIE
  1. ;
  1. SET XOBOK=1
  1. PORTSQ ;
  1. QUIT XOBOK
  1. ;
  1. ;
  1. PARMS(XOBCFG) ; -- add parameter entry
  1. NEW DIC,X,Y,DIE,DA,DR,XOBBOX,XOBDA,XOBMULI,XOBNEW
  1. ;
  1. ; -- box-pair name, no ien
  1. SET XOBBOX=$PIECE($$GETENV^XOBVTCP(),U,4)
  1. ;
  1. ; -- Top-Level Parameters --
  1. SET DIC="^XOB(18.01,",DIC(0)="LXZ",X=$$DOMAIN() DO ^DIC
  1. ;
  1. ; -- quit if lookup failed or if already exists
  1. IF Y=-1 GOTO PARMSQ
  1. ;
  1. SET XOBDA=+Y
  1. SET XOBNEW=0
  1. IF $PIECE(Y(0),U,2)="",$PIECE(Y(0),U,3)="" SET XOBNEW=1
  1. ;
  1. ; -- set basic parameters (HEARTBEAT RATE and LATENCY DELTA)
  1. IF XOBNEW DO
  1. . SET DA=XOBDA
  1. . SET DR=".02////180;.03////180"
  1. . SET DIE="^XOB(18.01,"
  1. . DO ^DIE
  1. ;
  1. ; -- Listeners Multiple --
  1. ;
  1. ; -- quit if no config passed in (ie. not Cache NT)
  1. IF '$GET(XOBCFG) GOTO PARMSQ
  1. ;
  1. ; -- set oth of multiple is needed
  1. IF $DATA(^XOB(18.01,1,"CONFIG",0))=0 SET ^XOB(18.01,1,"CONFIG",0)="^18.012P^^"
  1. ;
  1. SET DA(1)=XOBDA
  1. SET DIC="^XOB(18.01,"_XOBDA_",""CONFIG"","
  1. SET DIC(0)="LX"
  1. SET X=XOBBOX
  1. DO ^DIC
  1. ;
  1. ; -- quit if lookup failed or if already exists
  1. IF Y=-1 GOTO PARMSQ
  1. ;
  1. SET XOBMULI=+Y
  1. SET XOBNEW=$PIECE(Y,U,3)
  1. ;
  1. ; -- set listener config default
  1. IF XOBNEW DO
  1. . SET DA(1)=XOBDA
  1. . SET DA=XOBMULI
  1. . SET DR=".02////"_XOBCFG
  1. . SET DIE="^XOB(18.01,"_XOBDA_",""CONFIG"","
  1. . DO ^DIE
  1. ;
  1. PARMSQ ;
  1. QUIT
  1. ;
  1. ;
  1. DOMAIN() ; -- get account's domain entry
  1. ;
  1. QUIT $$KSP^XUPARAM("WHERE")
  1. ;
  1. ;
  1. SCHEDOPT ;-- Schedule XOBV LISTENER STARTUP option in TaskMan
  1. ;
  1. ; This procedure will schedule the XOBV LISTENER STARTUP option
  1. ; in the OPTION SCHEDULING file (#19.2).
  1. ;
  1. NEW XOBMSG,XOBOIEN,XOBSIEN
  1. ;
  1. ;-- XOBOIEN = IEN (OPTION file), XOBSIEN = IEN (OPTION SCHEDULING file)
  1. SET (XOBOIEN,XOBSIEN)=0
  1. ;
  1. DO BMES^XPDUTL(">>> Scheduling the XOBV LISTENER STARTUP option...")
  1. ;
  1. ;-- Check that option was added to OPTION file #19 during installation
  1. SET XOBOIEN=$$FIND1^DIC(19,"","BX","XOBV LISTENER STARTUP","","","")
  1. ;
  1. ;-- Error XOBMSG and quit if option was not added
  1. IF 'XOBOIEN DO QUIT
  1. . SET XOBMSG(1)=""
  1. . SET XOBMSG(2)=">>> Error: Option XOBV LISTENER STARTUP was not created in the OPTION (#19)"
  1. . SET XOBMSG(3)=" file during the KIDS installation. Please reinstall."
  1. . DO BMES^XPDUTL(.XOBMSG)
  1. ;
  1. ;-- Check if option was already scheduled
  1. SET XOBSIEN=$$CHKOPT(XOBOIEN)
  1. ;
  1. ;-- Display option and quit if option was previously added
  1. IF XOBSIEN DO QUIT
  1. . DO BMES^XPDUTL(">>> The XOBV LISTENER STARTUP option has previously been scheduled:")
  1. . DO DSPLYOP(XOBSIEN)
  1. ;
  1. ;-- Schedule the option
  1. SET XOBSIEN=$$FILEOPT(XOBSIEN,XOBOIEN,,,,"S")
  1. IF XOBSIEN DO
  1. . DO BMES^XPDUTL(">>> The XOBV LISTENER STARTUP option has been scheduled as follows:")
  1. . DO DSPLYOP(XOBSIEN)
  1. ELSE DO
  1. . SET XOBMSG(1)=">>> Error: There was an error scheduling the XOBV LISTENER STARTUP option."
  1. . SET XOBMSG(2)=" Please schedule this option using 'Schedule/Unschedule Options'"
  1. . SET XOBMSG(3)=" in the Taskman Management menu."
  1. . DO BMES^XPDUTL(.XOBMSG)
  1. QUIT
  1. ;
  1. ;
  1. CHKOPT(IEN) ;-- Check if option is already scheduled
  1. ;
  1. ; Input:
  1. ; IEN - IEN of option in OPTION file (#19)
  1. ;
  1. ; Output:
  1. ; XOBSIEN - IEN of option in OPTION SCHEDULING file (#19.2) or zero if it does not exist
  1. ;
  1. NEW X,X1,X2,XOBARY,XOBI,XOBIEN2
  1. SET (X1,X2,XOBI,XOBIEN2)=0
  1. DO FIND^DIC(19.2,"","@;.01I;9I","","XOBV LISTENER STARTUP","*","B","","","XOBARY")
  1. SET X=+$PIECE($GET(XOBARY("DILIST",0)),"^")
  1. FOR SET XOBI=$ORDER(XOBARY("DILIST","ID",X,XOBI)) QUIT:'XOBI DO
  1. . IF XOBI=.01,$GET(XOBARY("DILIST","ID",X,XOBI))=IEN SET X1=1
  1. . IF XOBI=9,$GET(XOBARY("DILIST","ID",X,XOBI))["S" SET X2=1
  1. . IF X1,X2 SET XOBIEN2=+$GET(XOBARY("DILIST",2,X))
  1. QUIT XOBIEN2
  1. ;
  1. ;
  1. DSPLYOP(IEN) ;-- Display fields from OPTION SCHEDULING file (#19.2)
  1. ;
  1. ; Input:
  1. ; IEN - IEN of record in file #19.2
  1. ;
  1. ; Output:
  1. ; Display of fields in record
  1. ;
  1. QUIT:'$GET(IEN)
  1. NEW DA,DIC,DIQ
  1. SET DIC="^DIC(19.2,",DA=IEN,DIQ(0)="CAR"
  1. DO MES^XPDUTL("")
  1. DO EN^DIQ
  1. DO BMES^XPDUTL("")
  1. QUIT
  1. ;
  1. ;
  1. FILEOPT(XOBIEN,XOBOPT,XOBQUE,XOBDEV,XOBRSCH,XOBSPARM) ;-- Schedule the option
  1. ;
  1. ;-- File a new record in file #19.2 or edit existing
  1. ;
  1. ; Input:
  1. ; XOBIEN - IEN from record in file #19.2 if it exists
  1. ; XOBOPT - IEN of option (file #19); (required)
  1. ; XOBQUE - Queued to run at what time; (optional)
  1. ; XOBDEV - Device for queued job output; (optional)
  1. ; XOBRSCH - Rescheduling frequency; (optional)
  1. ; XOBSPARM - Special queueing; (optional)
  1. ;
  1. ; Output:
  1. ; Function Value - Returns IEN of record on success, 0 on failure
  1. ;
  1. NEW XOBFDA,XOBFDAI,XOBERR,XOBIENS
  1. ;
  1. SET XOBIEN=+$GET(XOBIEN)
  1. ;
  1. ;-- If record doesn't already exist, create new
  1. IF XOBIEN SET XOBIENS=XOBIEN_","
  1. ELSE SET XOBIENS="+1,"
  1. ;
  1. ;-- Set up array with field values
  1. SET XOBFDA(19.2,XOBIENS,.01)=$GET(XOBOPT)
  1. SET XOBFDA(19.2,XOBIENS,2)=$GET(XOBQUE)
  1. SET XOBFDA(19.2,XOBIENS,3)=$GET(XOBDEV)
  1. SET XOBFDA(19.2,XOBIENS,6)=$GET(XOBRSCH)
  1. SET XOBFDA(19.2,XOBIENS,9)=$GET(XOBSPARM)
  1. ;
  1. IF XOBIEN DO
  1. . DO FILE^DIE("","XOBFDA","XOBERR")
  1. . IF $DATA(XOBERR) SET XOBIEN=0
  1. ELSE DO
  1. . DO UPDATE^DIE("","XOBFDA","XOBFDAI","XOBERR")
  1. . IF '$DATA(XOBERR) SET XOBIEN=$GET(XOBFDAI(1))
  1. ;
  1. QUIT $SELECT($GET(XOBIEN)>0:XOBIEN,1:0)
  1. ;
  1. ADDPROXY(XOBANAME) ; add application proxy if not present
  1. ; depends on XU*8*361
  1. NEW XOBID,XOBMSG,XOBSUBER,XOBSUBTX,XOBLINE
  1. ;
  1. ; if already present don't add
  1. QUIT:(+$$APFIND^XUSAP(XOBANAME))>0
  1. ;
  1. SET XOBID=$$CREATE^XUSAP(XOBANAME,"","XOBV VISTALINK TESTER")
  1. IF (+XOBID)>0 DO
  1. . SET XOBMSG(1)=" Added new Kernel Application Proxy User '"_XOBANAME_"'."
  1. . SET XOBMSG(2)=" ::This application proxy user account is used in the VistALink sample web"
  1. . SET XOBMSG(3)=" ::application, to demonstrate usage of the VistaLinkAppProxyConnectionSpec"
  1. . SET XOBMSG(4)=" ::connection spec."
  1. . DO BMES^XPDUTL(.XOBMSG)
  1. IF (+XOBID)=0 DO
  1. . ; already checked if user present, should never get 0 back
  1. . SET XOBMSG(1)=">>> Error: Could not add VistALink Application Proxy User '"_XOBANAME_"' -- Already exists."
  1. . DO BMES^XPDUTL(.XOBMSG)
  1. IF (+XOBID)<0 DO
  1. . SET XOBMSG(1)=">>> Error: Could not add VistALink Application Proxy User '"_XOBANAME_"'."
  1. . SET XOBMSG(2)=" DIERR nodes: <start of error(s)>"
  1. . SET XOBLINE=3,XOBSUBER=0 FOR SET XOBSUBER=$O(^TMP("DIERR",$J,XOBSUBER)) QUIT:(+XOBSUBER)'>0 DO
  1. . . SET XOBMSG(XOBLINE)=" "_^TMP("DIERR",$J,XOBSUBER),XOBLINE=XOBLINE+1
  1. . . SET XOBSUBTX=0 FOR SET XOBSUBTX=$O(^TMP("DIERR",$J,XOBSUBER,"TEXT",XOBSUBTX)) QUIT:(+XOBSUBTX)'>0 DO
  1. . . . SET XOBMSG(XOBLINE)=" "_^TMP("DIERR",$J,XOBSUBER,"TEXT",XOBSUBTX),XOBLINE=XOBLINE+1
  1. . SET XOBMSG(XOBLINE+1)=" <end of error(s)>"
  1. . DO BMES^XPDUTL(.XOBMSG)
  1. . K ^TMP("DIERR",$J)
  1. ;
  1. QUIT