RPC_SVC_CALLS
Section: C Library Functions (3)
Page Index
BSD mandoc
NAME
svc_dg_enablecache
svc_exit
svc_fdset
svc_freeargs
svc_getargs
svc_getreq_common
svc_getreq_poll
svc_getreqset
svc_getrpccaller
svc_pollset
svc_run
svc_sendreply
- library routines for RPC servers
SYNOPSIS
In rpc/rpc.h
Ft int
Fn svc_dg_enablecache SVCXPRT *xprt const unsigned cache_size
Ft void
Fn svc_exit void
Ft bool_t
Fn svc_freeargs const SVCXPRT *xprt const xdrproc_t inproc caddr_t in
Ft bool_t
Fn svc_getargs const SVCXPRT *xprt const xdrproc_t inproc caddr_t in
Ft void
Fn svc_getreq_common const int fd
Ft void
Fn svc_getreq_poll struct pollfd *pfdp const int pollretval
Ft void
Fn svc_getreqset fd_set * rdfds
Ft struct netbuf *
Fn svc_getrpccaller const SVCXPRT *xprt
Ft struct cmsgcred *
Fn __svc_getcallercreds const SVCXPRT *xprt
Vt struct pollfd svc_pollset[FD_SETSIZE];
Ft void
Fn svc_run void
Ft bool_t
Fn svc_sendreply SVCXPRT *xprt xdrproc_t outproc char *out
DESCRIPTION
These routines are part of the
RPC
library which allows C language programs to make procedure
calls on other machines across the network.
These routines are associated with the server side of the
RPC mechanism.
Some of them are called by the server side dispatch function,
while others
(such as
Fn svc_run )
are called when the server is initiated.
Routines
See
rpc(3)
for the definition of the
Vt SVCXPRT
data structure.
- Fn svc_dg_enablecache
-
This function allocates a duplicate request cache for the
service endpoint
Fa xprt ,
large enough to hold
Fa cache_size
entries.
Once enabled, there is no way to disable caching.
This routine returns 0 if space necessary for a cache of the given size
was successfully allocated, and 1 otherwise.
- Fn svc_exit
-
This function, when called by any of the RPC server procedure or
otherwise, causes
Fn svc_run
to return.
As currently implemented,
Fn svc_exit
zeroes the
svc_fdset
global variable.
If RPC server activity is to be resumed,
services must be reregistered with the RPC library
either through one of the
rpc_svc_create3
functions, or using
Fn xprt_register .
The
Fn svc_exit
function
has global scope and ends all RPC server activity.
-
Vt fd_set Va svc_fdset
-
- A global variable reflecting the
RPC server's read file descriptor bit mask; it is suitable as an argument
to the
select(2)
system call.
This is only of interest
if service implementors do not call
Fn svc_run ,
but rather do their own asynchronous event processing.
This variable is read-only (do not pass its address to
select(2)!),
yet it may change after calls to
Fn svc_getreqset
or any creation routines.
- Fn svc_freeargs
-
A function macro that frees any data allocated by the
RPC/XDR system when it decoded the arguments to a service procedure
using
Fn svc_getargs .
This routine returns
TRUE
if the results were successfully
freed, and
FALSE
otherwise.
- Fn svc_getargs
-
A function macro that decodes the arguments of an
RPC request associated with the RPC
service transport handle
Fa xprt .
The
Fa in
argument
is the address where the arguments will be placed;
Fa inproc
is the XDR
routine used to decode the arguments.
This routine returns
TRUE
if decoding succeeds, and
FALSE
otherwise.
- Fn svc_getreq_common
-
This routine is called to handle a request on the given
file descriptor.
- Fn svc_getreq_poll
-
This routine is only of interest if a service implementor
does not call
Fn svc_run ,
but instead implements custom asynchronous event processing.
It is called when
poll(2)
has determined that an RPC request has arrived on some RPC
file descriptors;
Fa pollretval
is the return value from
poll(2)
and
Fa pfdp
is the array of
Vt pollfd
structures on which the
poll(2)
was done.
It is assumed to be an array large enough to
contain the maximal number of descriptors allowed.
- Fn svc_getreqset
-
This routine is only of interest if a service implementor
does not call
Fn svc_run ,
but instead implements custom asynchronous event processing.
It is called when
poll(2)
has determined that an RPC
request has arrived on some RPC file descriptors;
Fa rdfds
is the resultant read file descriptor bit mask.
The routine returns when all file descriptors
associated with the value of
Fa rdfds
have been serviced.
- Fn svc_getrpccaller
-
The approved way of getting the network address of the caller
of a procedure associated with the
RPC service transport handle
Fa xprt .
- Fn __svc_getcallercreds
-
Warning
this macro is specific to
Fx and thus not portable.
This macro returns a pointer to a
Vt cmsgcred
structure, defined in
In sys/socket.h ,
identifying the calling client.
This only works if the client is
calling the server over an
AF_LOCAL
socket.
-
Vt struct pollfd Va svc_pollset[FD_SETSIZE] ;
-
svc_pollset
- is an array of
Vt pollfd
structures derived from
svc_fdset[]
It is suitable as an argument to the
poll(2)
system call.
The derivation of
svc_pollset
from
svc_fdset
is made in the current implementation in
Fn svc_run .
Service implementors who do not call
Fn svc_run
and who wish to use this array must perform this derivation themselves.
- Fn svc_run
-
This routine never returns.
It waits for RPC
requests to arrive, and calls the appropriate service
procedure using
Fn svc_getreq_poll
when one arrives.
This procedure is usually waiting for the
poll(2)
system call to return.
- Fn svc_sendreply
-
Called by an RPC service's dispatch routine to send the results of a
remote procedure call.
The
Fa xprt
argument
is the request's associated transport handle;
Fa outproc
is the XDR
routine which is used to encode the results; and
Fa out
is the address of the results.
This routine returns
TRUE
if it succeeds,
FALSE
otherwise.
AVAILABILITY
These functions are part of libtirpc.
SEE ALSO
poll(2),
select(2),
rpc(3),
rpc_svc_create3,
rpc_svc_err3,
rpc_svc_reg3