|

|
PowerRPC has the following features
- arbitrary number
of function arguments.
- besides return
values, OUT and INOUT arguments can be used for passing
data from the server to the client.
- general C expressions
can be used to specify array sizes, including function calls and conditional
expressions.
- user can define
new types.
- any C data
types can be used in function arguments and returns, e.g., int, long,
double, char, void*, enum, struct, union, int*, int **, int*arr[MAXSIZE],
int ***, variable size arrays, 2D arrays, linked lists, trees, ...
more than any existing RPC tools can handle.
- server can
fork a dedicated child server for each connected client.
- server can
fork a child to handle an incoming RPC call, so that the parent can
continue on other work. The WIN32 version can create a thread for
each RPC call.
- non-blocking
RPC, in which the call returns as soon as it is delivered.
- asynchronous
RPC, in which a server is signaled to serve an RPC call, instead of
waiting for RPCes.
- portmapper(or
rpcbind) is not required, since server can use fixed ports.
- an application
can be both the server and the client of the same RPC interface.
- a lot of other
interface properties can be defined to allow flexible custimzation
of the generated code.
- generated code
is fully C++ compatible. C++ code (RPC classes) generation will be
added soon.
- generated code
is compatible with both the socket based ONC RPC and TLI based TIRPC,
the details are encapsulated in the libpwrpc library.
- many more...
Information about ONC RPC
PowerRPC is based
on ONC RPC from Sun Microsystems, INC., which is available on almost
every UNIX platforms. We have ported ONC RPC to WIN32
and the associated DLL included in the powerRPC distribution exports
all ONC RPC functions.
PowerRPC uses
a complete different IDL from the ONC RPC from Sun Microsystems and
the generated complete client and server stub code for RPC functions
with multiple arguments, however the underline RPC protocol for powerRPC
is ONC RPC. It may be helpful for a developer to understand some of
the ONC RPC mechanisms.
|