project BLF > class BReportDaemonProcessor > method Initialize

Description

Initialize the daemon.
In this method everything is prepared for the proper functioning of the daemon.


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


unused


program code (program/breportdaemonprocessor.p)

<ANCESTOR-CODE>

<Q-1 run ReportDaemonData (all) (Read) (NoCache)
   (input 0, (DaemonID)
    output dataset tqReportDaemonData) in BReportDaemon >

for each tqReportDaemonData:
    if vlOneRecord = no
    then assign vcSocketGlobalSessionID = tqReportDaemonData.tcReportDaemonGlobSessionId
                vcSocketHost            = tqReportDaemonData.tcReportDaemonSocketServer
                viSocketPort            = tqReportDaemonData.tiReportDaemonSocketPort
                vlOneRecord             = yes.
    else assign vlOneRecord = ?.
end.

if vlOneRecord <> yes
then do:
    <M-2 run SetMessage
       (input  'Error in daemon configuration.' (icMessage), 
        input  '' (icArguments), 
        input  '' (icFieldName), 
        input  '' (icFieldValue), 
        input  'D' (icType), 
        input  3 (iiSeverity), 
        input  '' (icRowid), 
        input  'BLF-310605':U (icFcMsgNumber), 
        input  '' (icFcExplanation), 
        input  '' (icFcIdentification), 
        input  '' (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BReportDaemonProcessor>

    assign oiReturnStatus             = -5
           vlReportServiceUnavailable = true.

    return.
end.

/* =============================== */
/* Say started to the .NET service */
/* =============================== */
assign vlStartingReportDaemon = yes.
create socket vhtsocket no-error.

if error-status:error or
   error-status:num-messages > 0
then do:
    assign vcFcMaskList = "".

    do viFcCount1 = 1 to error-status:num-messages:
        if viFcCount1 > 1
        then assign vcFcMaskList = vcFcMaskList + chr(2).

        assign vcFcMaskList = vcFcMaskList + error-status:get-message(viFcCount1).
    end.

    <M-7 run SetMessage
       (input  trim(#T-7'Failed to create socket object.':255(998716605)T-7#) (icMessage), 
        input  '' (icArguments), 
        input  '' (icFieldName), 
        input  '' (icFieldValue), 
        input  'D' (icType), 
        input  3 (iiSeverity), 
        input  '' (icRowid), 
        input  'BLF-61249':U (icFcMsgNumber), 
        input  '' (icFcExplanation), 
        input  '' (icFcIdentification), 
        input  '' (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BReportDaemonProcessor>

    if vcFcMaskList <> ""
    then do viFcCount1 = 1 to num-entries(vcFcMaskList, chr(2)):
        <M-8 run SetMessage
           (input  entry(viFcCount1, vcFcMaskList, chr(2)) (icMessage), 
            input  '' (icArguments), 
            input  '' (icFieldName), 
            input  '' (icFieldValue), 
            input  'D' (icType), 
            input  3 (iiSeverity), 
            input  '' (icRowid), 
            input  'BLF-195428':U (icFcMsgNumber), 
            input  '' (icFcExplanation), 
            input  '' (icFcIdentification), 
            input  '' (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BReportDaemonProcessor>
    end.

    assign oiReturnStatus             = -3
           vlReportServiceUnavailable = true.

    return.
end.

assign vlFcOk = vhtsocket:set-read-response-procedure("ReportStartedResponse") no-error.

if not vlFcOk         or
   error-status:error or
   error-status:num-messages > 0
then do:
    assign vcFcMaskList = "".

    do viFcCount1 = 1 to error-status:num-messages:
        if viFcCount1 > 1
        then assign vcFcMaskList = vcFcMaskList + chr(2).

        assign vcFcMaskList = vcFcMaskList + error-status:get-message(viFcCount1).
    end.

    <M-9 run SetMessage
       (input  trim(#T-11'Failed to set read response procedure on socket object.':255(998716606)T-11#) (icMessage), 
        input  '' (icArguments), 
        input  '' (icFieldName), 
        input  '' (icFieldValue), 
        input  'D' (icType), 
        input  3 (iiSeverity), 
        input  '' (icRowid), 
        input  'BLF-765944':U (icFcMsgNumber), 
        input  '' (icFcExplanation), 
        input  '' (icFcIdentification), 
        input  '' (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BReportDaemonProcessor>

    if vcFcMaskList <> ""
    then do viFcCount1 = 1 to num-entries(vcFcMaskList, chr(2)):
        <M-10 run SetMessage
           (input  entry(viFcCount1, vcFcMaskList, chr(2)) (icMessage), 
            input  '' (icArguments), 
            input  '' (icFieldName), 
            input  '' (icFieldValue), 
            input  'D' (icType), 
            input  3 (iiSeverity), 
            input  '' (icRowid), 
            input  'BLF-780524':U (icFcMsgNumber), 
            input  '' (icFcExplanation), 
            input  '' (icFcIdentification), 
            input  '' (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BReportDaemonProcessor>
    end.

    assign oiReturnStatus             = -3
           vlReportServiceUnavailable = true.

    return.
end.

assign vlFcOk = vhtsocket:connect("-H " + vcSocketHost + " -S " + string(viSocketPort)) no-error.

if not vlFcOk         or
   error-status:error or
   error-status:num-messages > 0
then do:
    assign vcFcMaskList = "".

    do viFcCount1 = 1 to error-status:num-messages:
        if viFcCount1 > 1
        then assign vcFcMaskList = vcFcMaskList + chr(2).

        assign vcFcMaskList = vcFcMaskList + error-status:get-message(viFcCount1).
    end.

    <M-3 run SetMessage
       (input  trim(#T-5'The system failed to connect to report server $1 using port $2.':255(998716607)T-5#) (icMessage), 
        input  vcSocketHost + chr(2) + string(viSocketPort) (icArguments), 
        input  '' (icFieldName), 
        input  '' (icFieldValue), 
        input  'D' (icType), 
        input  3 (iiSeverity), 
        input  '' (icRowid), 
        input  'BLF-935919':U (icFcMsgNumber), 
        input  '' (icFcExplanation), 
        input  '' (icFcIdentification), 
        input  '' (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BReportDaemonProcessor>

    if vcFcMaskList <> ""
    then do viFcCount1 = 1 to num-entries(vcFcMaskList, chr(2)):
        <M-4 run SetMessage
           (input  entry(viFcCount1, vcFcMaskList, chr(2)) (icMessage), 
            input  '' (icArguments), 
            input  '' (icFieldName), 
            input  '' (icFieldValue), 
            input  'S' (icType), 
            input  3 (iiSeverity), 
            input  '' (icRowid), 
            input  'BLF-290039':U (icFcMsgNumber), 
            input  '' (icFcExplanation), 
            input  '' (icFcIdentification), 
            input  '' (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BReportDaemonProcessor>
    end.

    assign oiReturnStatus             = -3
           vlReportServiceUnavailable = true.

    return.
end.

set-size(vmStarted) = 10.
put-string(vmStarted, 1) = "STARTED".
assign vlFcOk = vhtsocket:write(vmStarted, 1, 10) no-error.

if not vlFcOk         or
   error-status:error or
   error-status:num-messages > 0
then do:
    assign vcFcMaskList = "".

    do viFcCount1 = 1 to error-status:num-messages:
        if viFcCount1 > 1
        then assign vcFcMaskList = vcFcMaskList + chr(2).

        assign vcFcMaskList = vcFcMaskList + error-status:get-message(viFcCount1).
    end.

    <M-12 run SetMessage
       (input  trim(#T-14'The system failed to write to socket object.':255(998716608)T-14#) (icMessage), 
        input  '' (icArguments), 
        input  '' (icFieldName), 
        input  '' (icFieldValue), 
        input  'D' (icType), 
        input  3 (iiSeverity), 
        input  '' (icRowid), 
        input  'BLF-599575':U (icFcMsgNumber), 
        input  '' (icFcExplanation), 
        input  '' (icFcIdentification), 
        input  '' (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BReportDaemonProcessor>

    if vcFcMaskList <> ""
    then do viFcCount1 = 1 to num-entries(vcFcMaskList, chr(2)):
        <M-13 run SetMessage
           (input  entry(viFcCount1, vcFcMaskList, chr(2)) (icMessage), 
            input  '' (icArguments), 
            input  '' (icFieldName), 
            input  '' (icFieldValue), 
            input  'S' (icType), 
            input  3 (iiSeverity), 
            input  '' (icRowid), 
            input  'BLF-931479':U (icFcMsgNumber), 
            input  '' (icFcExplanation), 
            input  '' (icFcIdentification), 
            input  '' (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BReportDaemonProcessor>
    end.

    assign oiReturnStatus             = -3
           vlReportServiceUnavailable = true.

    return.
end.

wait-for read-response of vhtsocket pause 30. /* Time-out = 30 seconds */
vhtsocket:disconnect().
delete object vhtsocket.
vhtsocket = ?.

if vlStartingReportDaemon = yes
then do:
    <M-6 run SetMessage
       (input  trim(#T-6'The report server has timed out.':255(9230)T-6#) (icMessage), 
        input  '' (icArguments), 
        input  '' (icFieldName), 
        input  '' (icFieldValue), 
        input  'D' (icType), 
        input  3 (iiSeverity), 
        input  '' (icRowid), 
        input  'BLF-430340':U (icFcMsgNumber), 
        input  '' (icFcExplanation), 
        input  '' (icFcIdentification), 
        input  '' (icFcContext), 
        output viFcReturnSuper (oiReturnStatus)) in BReportDaemonProcessor>

    assign oiReturnStatus             = -3
           vlReportServiceUnavailable = true.

    return.
end.

finally:
    set-size(vmStarted) = 0.
    if vhtsocket <> ?
    then delete object vhtsocket.
end finally.