%GetRPCCallerObject function


Function
The function returns a unique identifier (HOBJ) of object of the Event, Picture type that called currently executed RPC procedure.
Declaration
INT %GetRPCCallerObject()
Parameters
No parameters.
Return value
The return value is of the Int type.
Description
This function can be used to identify the calling Event or Picture in an application that is built on client-server architecture. It eliminates the explicit transmission of process identifier by means of parameters.
This example shows the transmission of identifier of calling process by means of parameter and its utilization for the purpose of responding without use of %GetRPCCallerObject and %GetRPCCallerProcess:
 
Calling
Example
PROCEDURE ....
; Complete identification of calling process by means of parameters
INT _callerProcess, _callerObject
_callerObject := %GetSelfHBJ(@FALSE)
_callerProcess := %GetParentProcessHBJ()
;calling
CALL [E.Service] Question(_callerProcess, _callerObject) ON SELF.EVH
; ....
END ....
 
Handling of calls on the server side:
 
; Handling
RPC PROCEDURE Question (IN INT _callerProcess, _callerObject)
 ; Response!!! ASYNC required, if the Question procedure is called synchronously - otherwise DeadLock occurs!!!
 CALL [(_callerObject)] QuestionReply ASYNC ON (_callerProcess)
END Question
 
By means of %GetRPCCallerProcess, %GetRPCCallerObject:
 
Calling
 
PROCEDURE ....
;calling
CALL [E.Service] Question ON SELF.EVH
; ....
END ....
 
Handling of calls on the server side:
 
RPC PROCEDURE Question
 ; identification of calling process
 INT _callerProcess, _callerObject
 _callerObject := %GetRPCallerProcess()
 _callerProcess := %GetRPCCallerObject()
 ; Response!!! ASYNC required, if the Question procedure is called synchronously - otherwise DeadLock occurs!!!
 IF %GetRPCCallerIsJava() THEN
  CALLJ [(_callerObject)] QuestionReply ASYNC ON (_callerProcess)
 ELSE
  CALL [(_callerObject)] QuestionReply ASYNC ON (_callerProcess)
 ENDIF
END Question
Napíšte komentár