open-insight/SYSPROG/STPROC/COMM_DIALOG_IDXSVR.txt
2024-03-25 15:17:34 -07:00

147 lines
3.3 KiB
Plaintext

COMPILE FUNCTION Comm_Dialog_IDXSVR( Instruction, Parm1 )
/*
Commuter Module for Index Server (IDXSVR) Dialog Window
J.C. Henry, Inc. - John C. Henry
*/
DECLARE SUBROUTINE Center_Window,StatusLine,Set_Property,End_Dialog, Send_Event, Set_Status, Adios
DECLARE SUBROUTINE ErrMsg, Send_Message, obj_Tables, Post_Event, Set_Bgnd_IX_Time, Set_IDXSvr, ShowWindow
DECLARE FUNCTION Get_Property, Get_Status,Dialog_Box, FindWindow
EQU CRLF$ TO \0D0A\
EQU TRUE$ TO 1
EQU FALSE$ TO 2
$INSERT ENVIRON_CONSTANTS
ErrTitle = 'Error in Comm_Dialog_IDXSVR routine'
ErrorMsg = ''
Instructions = 'Create'
Instructions := @FM:'Timer'
Instructions := @FM:'StartStop'
Instructions := @FM:'Close'
RetVal = ''
LOCATE Instruction IN Instructions USING @FM SETTING Pos THEN
ON Pos GOSUB Create,Timer,StartStop,Close
END
RETURN RetVal
* * * * * * *
Create:
* * * * * * *
*Center_Window(@WINDOW)
StatusLine(@WINDOW)
Set_Status(0)
otParms = 'SYSOBJ':@RM:'INDEX_SERVER'
obj_Tables('LockRec',otParms) ;* Places lock on fictional record
IF Get_Status(errCode) THEN
ErrorMsg = ErrTitle:@SVM:'Another index server is already running.'
ErrMsg(ErrorMsg)
Post_Event(@WINDOW,'CLOSE')
RETURN
END
Set_Property(@WINDOW,'@LOCKED',1) ;* Set ad-hoc property '@LOCKED' to true
*Set_Property(@WINDOW,'TIMER','5000':@FM:'0') ;* Set timer event to 5000 msecs (5 seconds) to check for shutdown time.
* Code added 6/9/2004 to show engine window when running on a runtime JCH
OpenEngineHandle = FindWindow("AREV":\00\,0)
ShowWindow(OpenEngineHandle,1)
* No return on create -> automatically starts index server
* * * * * * *
StartStop:
* * * * * * *
StartStop = Get_Property(@WINDOW:'.START_STOP_BUTTON','TEXT')
IF StartStop = 'Stop Index Server' THEN
* Index server is running
Set_IDXSvr(0) ;* Turn off index server
Set_Bgnd_IX_Time(0) ;* Turn off background indexing by setting interval to zero
Set_Property(@WINDOW:'.START_STOP_BUTTON','TEXT', 'Start Index Server')
Set_Property(@WINDOW:'.CLOSE_BUTTON','ENABLED',1)
END ELSE
IndexInterval = Get_Property(@WINDOW:'.INTERVAL','TEXT')
IF IndexInterval = '' THEN
* bad value entered or null
IndexInterval = 10
Set_Property(@WINDOW:'.INTERVAL','INVAL',IndexInterval)
END
Set_Bgnd_IX_Time(IndexInterval) ;* Set background index inteval to IndexInterval (Seconds)
Set_Property(@WINDOW:'.START_STOP_BUTTON','TEXT', 'Stop Index Server')
Set_IDXSvr(1) ;* Start the index server process
Set_Property(@WINDOW:'.CLOSE_BUTTON','ENABLED',0)
END
RETURN
* * * * * * *
Close:
* * * * * * *
otParms = 'SYSOBJ':@RM:'INDEX_SERVER'
obj_Tables('LockRec',otParms) ;* Places lock on fictional record
IF Get_Status(errCode) THEN
Set_Status(0)
obj_Tables('UnlockRec',otParms) ;* Removes lock on fictional record
END
Set_Property('SYSTEM','IDLEPROC','ADIOS')
*Adios() ;* Utility('SYSTEM','DESTROY') in a wrapper
RETURN
* * * * * * *
Timer:
* * * * * * *
ShutDownTime = Get_Property(@WINDOW:'.SHUTDOWN_TIME','INVALUE')
Set_Property(@WINDOW:'.COUNTDOWN','INVALUE',ShutDownTime - TIME())
IF TIME() > ShutDownTime THEN
Set_IDXSvr(0) ;* Turn off index server
Set_Bgnd_IX_Time(0) ;* Turn off background indexing by setting interval to zero
Set_Property('SYSTEM','IDLEPROC','ADIOS')
END
RETURN