rpc_clnt_calls.3n (2010 09)
r
rpc_clnt_calls(3N) rpc_clnt_calls(3N)
If the remote call succeeds, the status returned is
RPC_SUCCESS. Otherwise, an appropriate status
is returned.
bool_t clnt_freeres()
A function macro that frees any data allocated by the RPC/XDR system when it decoded the results
of an RPC call. The parameter out is the address of the results, and outproc is the XDR routine
describing the results. This routine returns
1 if the results were successfully freed; otherwise it
returns 0.
void clnt_geterr()
A function macro that copies the error structure out of the client handle to the structure at address
errp .
void clnt_perrno()
Prints a message to standard error corresponding to the condition indicated by stat . A newline is
appended. It is normally used after a procedure call fails for a routine for which a client handle is
not needed, for instance
rpc_call().
void clnt_perror()
Prints a message to the standard error indicating why an RPC call failed; clnt is the handle used to
do the call. The message is prepended with string s and a colon. A newline is appended. It is nor-
mally used after a remote procedure call fails for a routine which requires a client handle, for
instance
clnt_call().
char *clnt_sperrno()
Takes the same arguments as clnt_perrno()
, but instead of sending a message to the standard
error indicating why an RPC call failed, returns a pointer to a string that contains the message.
clnt_sperrno() is normally used instead of
clnt_perrno() when the program does not have
a standard error, as a program running as a server quite likely does not.
clnt_sperrno()
is
also used if the programmer does not want the message to be output with
printf() (see
printf (3S)), or if a message format different than that supported by clnt_perrno()
is to be used.
Unlike
clnt_sperror() and clnt_spcreaterror()
(see rpc_clnt_create(3N)),
clnt_sperrno() does not return a pointer to static data. Therefore, the result is not overwritten
on each call.
char *clnt_sperror()
Similar to clnt_perror(), except that like
clnt_sperrno(), it returns a string instead of
printing to standard error. However,
clnt_sperror()
does not append a newline at the end of
the message.
clnt_sperror() returns a pointer to a buffer that is overwritten on each call. In multithreaded
applications, this buffer is implemented as thread-specific data.
enum clnt_stat rpc_broadcast()
Similar to rpc_call(), except that the call message is broadcast to all the connectionless tran-
sports specified by nettype .Ifnettype is NULL, it defaults to netpath. Each time it receives a
response, this routine calls eachresult(), whose form is:
bool_t eachresult(
caddr_t out,
const struct netbuf *addr,
const struct netconfig *netconf );
where out is the same as out passed to rpc_broadcast(), except that the remote procedure’s out-
put is decoded there; addr points to the address of the machine that sent the results, and netconf is
the netconfig structure of the transport on which the remote server responded. If eachresult()
returns 0, rpc_broadcast() waits for more replies; otherwise it returns with appropriate status.
The broadcast file descriptors are limited in size to the maximum transfer size of that transport.
For Ethernet, this value is 1500 bytes.
rpc_broadcast() uses AUTH_SYS credentials by default
(see rpc_clnt_auth(3N)).
enum clnt_stat rpc_broadcast_exp()
Similar to rpc_broadcast(), except that the initial timeout, inittime , and the maximum
timeout, waittime , are specified in milliseconds.
inittime is the initial time that
rpc_broadcast_exp() waits before resending the request. After
the first resend, the re-transmission interval increases exponentially until it exceeds waittime .
2 Hewlett-Packard Company − 2 − HP-UX 11i Version 3: September 2010