project BLF > class TDaemonUtility > method GetDaemonProcessInfo

Description

Method to be used to get information on the daemon processes for a certain named daemon, or all daemons.


Parameters


icDaemonNameinputcharacterName of the daemon. This is mandatory.
ocMessageoutputcharacter
ocProcessInfooutputcharacterString which contains all process ids, with the status indication.
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


BLF
method BApplicationProperty.APIGetAppServerInformation


program code (program1/tdaemonutility.p)

assign oiReturnStatus = -98.

<Q-1 run DaemonInfo (all) (Read) (NoCache)
   (input ?, (DaemonId)
    input icDaemonName, (DaemonName)
    input ?, (DaemonStatus)
    input ?, (DaemonStatusDiffersFrom)
    output dataset tqDaemonInfo) in BBaseDaemon >

<M-13 run GetAppserverConnection
   (input  icDaemonName (icDaemonName), 
    input  '' (icDaemonAppserverURL), 
    output vhAppserver (ohDaemonAppserver), 
    output vcMessage (ocMessage), 
    output viFcReturnSuper (oiReturnStatus)) in TDaemonUtility>

if viFcReturnSuper < 0
then do:
    assign oiReturnStatus = viFcReturnSuper
           ocMessage = vcMessage.
    return.
end.
    
if valid-handle(vhAppserver) and vhAppserver:connected()
then do:
    /* ================================================================= */
    /* run daemon on appserver                                           */
    /* ================================================================= */
    run program/tdaemonutility.p persistent set vhFcComponent on vhAppserver (input viSessionID).
end.

for each tqDaemonInfo :
    do viProcessCount = 1 to num-entries(tqDaemonInfo.tcDaemonProcessIDs):

        viProcessID = 0.
        if num-entries (entry(viProcessCount,tqDaemonInfo.tcDaemonProcessIDs),":") = 2
        then assign vcProcessHostname = entry (1,entry(viProcessCount,tqDaemonInfo.tcDaemonProcessIDs),":")
                    viProcessID = integer(entry(2,entry(viProcessCount,tqDaemonInfo.tcDaemonProcessIDs),":")) no-error.
        else assign viProcessID = integer(entry(viProcessCount,tqDaemonInfo.tcDaemonProcessIDs)) no-error.
        
        if valid-handle(vhAppserver) and vhAppserver:connected()
        then do:
            run ProcessIsValidInternal in vhFcComponent
               (input  vcProcessHostname,
                input  viProcessID, 
                output vlValid, 
                output viFcReturnSuper).
        end.
        else do:
            <M-16 run ProcessIsValidInternal
               (input  vcProcessHostname (icProcessHostname), 
                input  viProcessID (iiProcessNR), 
                output vlValid (olValid), 
                output viFcReturnSuper (oiReturnStatus)) in TDaemonUtility>
        end.
        if viFcReturnSuper < 0
        then do :
            assign ocMessage = vcMessage
                   oiReturnStatus = viFcReturnSuper.
            return.
        end.
        assign ocProcessInfo = ocProcessInfo
            + (if viProcessCount > 1 then ", " else "")
            + string(viProcessId) + ": " 
            + (if vlValid = yes
               then #T-8'OK':255(5156)T-8#
               else if vlValid = no
                    then #T-9'Not OK':255(5157)T-9#
                    else #T-51'Unknown':20(425)T-51#).
    end.
end.

if valid-handle(vhAppserver) and vhAppserver:connected()
then do:
    run gipr_DeleteProcedure in vhFcComponent.
    delete procedure vhFcComponent.
    vhAppserver:disconnect().
    delete object vhAppserver.
end.

if oiReturnStatus = -98
then assign oiReturnStatus = 0.