---
name: "UR::Service::RPC::Message"
section: "3pm"
platform: "linux"
package: "libur-perl"
version: "0.470+ds-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/UR::Service::RPC::Message"
---

# UR::Service::RPC::Message(3pm)

Serializable object appropriate for sending RPC messages

## 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-in `"exception"` 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
