NAME
UR::Service::RPC::Message - Serializable object appropriate for sending RPC messages
SYNOPSIS
my
$msg
= UR::Service::RPC::Message->create(
target_class
=>
'URT::RPC::Thingy'
,
method_name
=>
'join'
,
params
=> [
'-'
,
@join_args
],
'wantarray'
=> 0,
);
$msg
->
send
(
$fh
);
my
$resp
= UR::Service::RPC::Message->
recv
(
$fh
, 5);
DESCRIPTION
This class is used as a message-passing interface by the RPC service modules.
PROPERTIES
These properties should be filled in by the initiating caller
- method_name => Text
-
The name of the subroutine the initiator whishes to call.
- target_class => Text
-
The namespace the initiator wants the subroutine to be called in
- params => ARRAY
-
List of parameters to pass to the subroutine
- wantarray => Boolean
-
What wantarray() context the subroutine should be called in.
These properties are assigned after the RPC call to the subroutine
- return_values => ARRAY
-
List of values returned by the subroutine
- exception
-
On the receiving side, the subroutine is called within an eval. If there was an exception,
exception
stores the value of $@, or the empty string. The receiving side should also fill-inexception
if there was an authentication failure. - fh
-
recv
fills this in with the file handle the message was read from.
METHODS
- send
-
$bytes
=
$msg
->
send
(
$fh
);
Serializes the Message object with FreezeThaw and writes the data to the filehandle $fh. Returns the number of bytes written. $bytes will be false if there was an error.
- recv
-
$response
= UR::Service::RPC::Message->
recv
(
$fh
,
$timeout
);
$response
=
$msg
->
recv
();
Reads a serialized Message from the filehandle and constructs a Message object that is then returned to the caller. In the first case, it reads from the given filehandle, waiting a maximum of $timeout seconds with select before giving up. In the second case, it reads from whatever filehandle is stored in $msg to read data from.
SEE ALSO
UR::Service::RPC::Server, UR::Service::RPC::Executor