project BLF > include tFcStopInstance.i

Description

Stop an instance of a business component, from a technical component.


include parameters


&CLASSclass short name
&ERROR-STATEMENTAction to take when an error occurred.
&SESSIONID
&USER-DEFINED-CONTEXT


Internal usage


BLF
method RPCRequestService.ForcePublish
method RPCRequestService.ProcessDS
method RPCRequestService.PublishComponent
method RPCRequestService.RunAPI
method RPCRequestService.ValidateSession
method Startup.StartDefaultComponents
method TDaemon.StartRun


include code

&IF "{&CLASS-REF}" = ""
&THEN
if vi{&CLASS}Id <> 0
then do:
    if not valid-handle(vh{&CLASS}Inst)
    then run GetInstanceInPool (input "{&CLASS}":U,
                                input vi{&CLASS}Id,
                                output vh{&CLASS}Inst).
    if not valid-handle(vh{&CLASS}Inst)
    then do:
        &if defined(INS-PROCEDURE-{&CLASS})
        &then
        run value(lc({&INS-PROCEDURE-{&CLASS}}))
        &else
        run value(lc("ins/ins__{&CLASS}.p":U))
        &endif
            persistent set vh{&CLASS}Inst.
        run Mainblock in vh{&CLASS}Inst
           (input        {&SESSIONID},
            input        0,
            input        0,
            input        false,
            input        "{&USER-DEFINED-CONTEXT}",
            input-output vi{&CLASS}Id,
                  output viFcIncludeReturn).
        if viFcIncludeReturn < 0
        then do:
            assign oiReturnStatus = viFcIncludeReturn.
            run StopInstance in vh{&CLASS}Inst
               (input "", input "", input "", input no,
                output viFcIncludeReturn).
            delete procedure vh{&CLASS}Inst.
            assign vh{&CLASS}Inst = ?.
            &IF "{&ERROR-STATEMENT}" = ""
            &THEN
            return ?.
            &ELSE
            {&ERROR-STATEMENT}
            &ENDIF
        end.
    end.
    
    run StopInstance in vh{&CLASS}Inst
       (input (if vlFcStateless then "delete":U else ""),
        input "",
        input "",
        input no,
        output viFcIncludeReturn).
    if viFcIncludeReturn < 0
    then do:
        assign oiReturnStatus = viFcIncludeReturn.
        &IF "{&ERROR-STATEMENT}" = ""
        &THEN
        return ?.
        &ELSE
        {&ERROR-STATEMENT}
        &ENDIF
    end.
    
    delete procedure vh{&CLASS}Inst.
    assign vh{&CLASS}Inst = ?
           vi{&CLASS}Id   = 0.
end.
&ELSE
if vi{&CLASS-REF}Id <> 0
then do:
    if not valid-handle(vh{&CLASS-REF}Inst)
    then run GetInstanceInPool (input "{&CLASS}":U,
                                input vi{&CLASS-REF}Id,
                                output vh{&CLASS-REF}Inst).
    if not valid-handle(vh{&CLASS-REF}Inst)
    then do:
        &if defined(INS-PROCEDURE-{&CLASS})
        &then
        run value(lc({&INS-PROCEDURE-{&CLASS}}))
        &else
        run value(lc("ins/ins__{&CLASS}.p":U))
        &endif
            persistent set vh{&CLASS-REF}Inst.
        run Mainblock in vh{&CLASS-REF}Inst
           (input        {&SESSIONID},
            input        0,
            input        0,
            input        false,
            input        "{&USER-DEFINED-CONTEXT}",
            input-output vi{&CLASS-REF}Id,
                  output viFcIncludeReturn).
        if viFcIncludeReturn < 0
        then do:
            assign oiReturnStatus = viFcIncludeReturn.
            run StopInstance in vh{&CLASS-REF}Inst
               (input "", input "", input "", input no,
                output viFcIncludeReturn).
            delete procedure vh{&CLASS-REF}Inst.
            assign vh{&CLASS-REF}Inst = ?.
            &IF "{&ERROR-STATEMENT}" = ""
            &THEN
            return ?.
            &ELSE
            {&ERROR-STATEMENT}
            &ENDIF
        end.
    end.
    
    run StopInstance in vh{&CLASS-REF}Inst
       (input (if vlFcStateless then "delete":U else ""),
        input "",
        input "",
        input no,
        output viFcIncludeReturn).
    if viFcIncludeReturn < 0
    then do:
        assign oiReturnStatus = viFcIncludeReturn.
        &IF "{&ERROR-STATEMENT}" = ""
        &THEN
        return ?.
        &ELSE
        {&ERROR-STATEMENT}
        &ENDIF
    end.
    
    delete procedure vh{&CLASS-REF}Inst.
    assign vh{&CLASS-REF}Inst = ?
           vi{&CLASS-REF}Id   = 0.
end.
&ENDIF