PreviousNext

Defining the Manager Entry Point Vectors for Each Set of Operations

Manager is the DCE term for the part of a server that actually implements a set of interface operations (the remote procedures), as distinguished from the more or less generic server initialization code described here. (see sample_manager.c for an example of manager code). A manager EPV is the data structure in which is recorded the entry addresses of the application routines that implement the server's operations, as offered through an interface. The server's stub code uses the EPV to dispatch incoming RPCs to the requested operations. For each interface the server supports, a default manager EPV is generated automatically by the IDL compiler. In order for the RPC runtime to properly dispatch remote procedure calls to the correct procedure, the server initialization code must declare the default EPVs and then register them with the runtime, as shown in the following example:

extern rdaclif_v1_0_epv_t dce_acl_v1_0_epv;
extern sample_bind_v1_0_epv_t sample_bind_epv;

We will later describe registering the EPVs with the RPC runtime.

If more than one version of the same interface is to be supported by the same server, another EPV is needed for each additional interface version. Interface version numbers are specified by the version attribute in the .idl file. Additional EPVs are also required if the application implements the procedures in more than one way. For example, some applications invoke the same remote procedure to operate on different types of objects. Different objects would likely require different implementations, and thus more than one manager procedure would be coded. The type manager RPC runtime mechanism, properly utilized, allows a server to declare multiple EPVs under the same interface, and to have the RPC runtime vector (direct) the incoming remote calls to the correct implementation code.