📄 stafmon.rxp
字号:
else rc = MakeSTAFResult(STAFError.!FileOpenError, "Error creating directory" directory) end when type = "LIST" then do if clientTrust < 2 then RETURN MakeSTAFResult(STAFError.!AccessDenied, , STAFError.!AccessDenied.!text) if optionTimes("MACHINES") > 0 then do listFileOpts = "DT" listDir = directory || fileSep"*" end else do listFileOpts = "FT" listDir = directory || fileSep || ResolveVariable(optionValue("MACHINE")) || fileSep"*"ext end call SysFileTree listDir, stem, listFileOpts if stem.0 = 0 then RETURN MakeSTAFResult(STAFError.!FileOpenError, , "No monitor data found") rc = MakeSTAFResult(STAFError.!Ok) do i = 1 to stem.0 parse var stem.i listDateTime listSize . listFile listFirst = LASTPOS(fileSep,listfile) + 1 if optionTimes("MACHINES") > 0 then do listLength = LENGTH(listFile) - listFirst + 1 listRest = lineSep listFile = SUBSTR(listFile, listFirst, listLength) end else do listLength = LASTPOS('.', listFile) - listFirst listRest = MakeStandardDate(SUBSTR(listDateTime,4,2) || , SUBSTR(listDateTime, 7, 2) || SUBSTR(listDateTime, 1, 2)) || "-" || , SUBSTR(listDateTime, 10, 2) || ":" || SUBSTR(listDateTime, 13, 2) || , ":00 Size="listSize || lineSep listFile = SUBSTR(SUBSTR(listFile, listFirst, listLength), 1, 25, '.') end rc = rc || listFile" "listRest end end when type = "HELP" then do rc = MakeSTAFResult(STAFError.!Ok, "STAF Monitor Help" || lineSep || lineSep || , "LOG MESSAGE <Message> [RESOLVEMESSAGE NORESOLVEMESSAGE]" || lineSep || , "QUERY MACHINE <Machine> HANDLE <Handle>" || lineSep || , "LIST <MACHINES | [MACHINE <Machine>]" || lineSep || , "DELETE [BEFORE <Date>] CONFIRM" || lineSep || , "REFRESH VAR" || lineSep || , "HELP") end when type = "REFRESH" then do if clientTrust < 3 then RETURN MakeSTAFResult(STAFError.!AccessDenied, , STAFError.!AccessDenied.!text) rc = MakeSTAFResult(ProcessVars("SET")) end when type = "VERSION" then RETURN MakeSTAFResult(STAFError.!Ok, version) when type = "DELETE" then do if clientTrust < 4 then RETURN MakeSTAFResult(STAFError.!AccessDenied, , STAFError.!AccessDenied.!text) RETURN DeleteData(ResolveVariable(optionValue("BEFORE"))) end otherwise RETURN MakeSTAFResult(STAFError.!InvalidRequestString, , STAFError.!InvalidRequestString.!text || lineSep || "Use HELP for syntax") endRETURN rc/* End of STAFServiceAcceptRequest *//****************************************************************************//* ProcessVars - Using the RxThread functions, determine the STAF *//* variables need for Monitor. *//* *//* Accepts: action, serviceName *//* Returns: 0 *//****************************************************************************/ProcessVars: PROCEDURE EXPOSE lineSep fileSep directory maxRetry maxSize, resolveMessage STAFHandle STAFResult, serviceName STAFError. parse arg action me = "STAF/Service/"serviceName"/" /* New variable style >= 1.75 */ oldMe = "STAFMonitor/" /* Old variable style < 1.75 */ rxPool = me"Pool" /* RxThread pool name */ if translate(action) = "READ" then do lineSep = RxThreadValue(rxPool, "lineSep") fileSep = RxThreadValue(rxPool, "fileSep") directory = RxThreadValue(rxPool, "directory") maxRetry = RxThreadValue(rxPool, "maxRetry") maxSize = RxThreadValue(rxPool, "maxSize") resolveMessage = RxThreadValue(rxPool, "resolveMessage") end else do /* Determine Line Seperator */ STAFRC = STAFSubmit("LOCAL", "VAR", "GLOBAL RESOLVE {STAF/Config/Sep/Line}") if STAFRC = 0 then lineSep = STAFResult else lineSep = x2c("0D0A") call RxThreadValue rxPool, "lineSep", lineSep /* Determine File Seperator */ STAFRC = STAFSubmit("LOCAL", "VAR", "GLOBAL RESOLVE {STAF/Config/Sep/File}") if STAFRC = 0 then fileSep = STAFResult else fileSep = "\" call RxThreadValue rxPool, "fileSep", fileSep /* Determine directory */ STAFRC = STAFSubmit("LOCAL", "VAR", "RESOLVE {"me"Directory}") if STAFRC = 0 then directory = STAFResult else do STAFRC = STAFSubmit("LOCAL", "VAR", "RESOLVE {STAF/Config/BootDrive}") if STAFRC = 0 then directory = STAFResult || fileSep || "STAF" || fileSep || serviceName else EXIT MakeSTAFResult(STAFError.!VariableDoesNotExist, , STAFError.!VariableDoesNotExist.!text || ": STAF/Config/BootDrive") STAFRC = STAFSubmit("LOCAL", "VAR", "RESOLVE {"oldMe"Directory}") if STAFRC = 0 then call DisplayOldVarErrorMessage "Directory", directory end call RxThreadValue rxPool, "directory", directory /* Determine maximum times to retry reading/writing a monitor record */ max = 5 STAFRC = STAFSubmit("LOCAL", "VAR", "RESOLVE {"me"Retry}") if STAFRC = 0 then maxRetry = STAFResult else do maxRetry = max STAFRC = STAFSubmit("LOCAL", "VAR", "RESOLVE {"oldMe"Retry}") if STAFRC = 0 then call DisplayOldVarErrorMessage "Retry", maxRetry end if \datatype(maxRetry,'W') then maxRetry = max call RxThreadValue rxPool, "maxRetry", maxRetry /* Determine maximum record size for monitor data */ max = 1024 STAFRC = STAFSubmit("LOCAL", "VAR", "RESOLVE {"me"MaxRecordSize}") if STAFRC = 0 then maxSize = STAFResult else do maxSize = max STAFRC = STAFSubmit("LOCAL", "VAR", "RESOLVE {"oldMe"MaxRecordSize}") if STAFRC = 0 then call DisplayOldVarErrorMessage "MaxRecordSize", maxSize end if \datatype(maxSize,'W') then maxSize = max call RxThreadValue rxPool, "maxSize", maxSize /* Determine message resolution option */ resolveMessage = 0 STAFRC = STAFSubmit("LOCAL", "VAR", "RESOLVE {"me"ResolveMessage}") if STAFRC = 0 then if STAFResult = 1 then resolveMessage = 1 else resolveMessage = 0 else do STAFRC = STAFSubmit("LOCAL", "VAR", "RESOLVE {"oldMe"ResolveMessage}") if STAFRC = 0 then call DisplayOldVarErrorMessage "ResolveMessage", resolveMessage end call RxThreadValue rxPool, "resolveMessage", resolveMessage end /* if not READ */RETURN STAFError.!Ok/****************************************************************************//* DeleteData - Purge monitor files and directories. *//* *//* Accepts: nothing *//* Returns: 0 *//****************************************************************************/DeleteData: PROCEDURE EXPOSE ext fileSep directory , errorDate errorDate.!text STAFError.!Ok parse arg beforeDate if beforeDate > '' then do if TRANSLATE(beforeDate) = "TODAY" then beforeDate = date('S') else do call EvalDate(beforeDate) parse var result evalDate_rc evalDate_date if evalDate_rc = 0 then beforeDate = evalDate_date else EXIT MakeSTAFResult(errorDate, errorDate.!text || beforeDate || , " MM/DD/YY or YYYYMMDD") end end call SysFileTree directory || fileSep || "*"ext, stem, "SF" do i = 1 to stem.0 parse var stem.i listDate listTime listSize . listFile if beforeDate > '' then do call EvalDate(listDate) parse var result evalDate_rc evalDate_date if evalDate_date < beforeDate then call SysFileDelete STRIP(listFile) end else call SysFileDelete STRIP(listFile) end call SysFileTree directory || fileSep || "*", stem, "SDO" do i = 1 to stem.0 call SysRmDir stem.i endRETURN MakeSTAFResult(STAFError.!Ok)/****************************************************************************//* STAFServiceTerm - Terminates the service *//* *//* Accepts: The name of this service *//* Returns: 0 *//****************************************************************************/STAFServiceTerm: parse arg serviceNameRETURN MakeSTAFResult(STAFError.!Ok)/******************************************************************************//* From here on are imported functions, DO NOT CHANGE ANYTHING BELOW HERE *//******************************************************************************/#From STAFUtil Import MakeSTAFResult STAFErrorText STAFWrapData#From Misc Import CreatePath#From LogMon Import LogMonErrorText ResolveVariable FileStatus#From LogMon Import DisplayOldVarErrorMessage#From STAFCPar Import All#From Date Import All
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -