rpc_ep_register_no_replace- adds to server address information in the local endpoint map
void rpc_ep_register_no_replace( rpc_if_handle_t if_handle, rpc_binding_vector_t *binding_vec, uuid_vector_t *object_uuid_vec, unsigned_char_t *annotation, unsigned32 *status);
- Specifies an interface specification to register with the local endpoint map.
- Specifies a vector of binding handles over which the server can receive remote procedure calls.
- Specifies a vector of object UUIDs that the server offers.
The application supplies the value NULL to indicate there are no object UUIDs to register. In this case, each cross-product element contains the nil UUID.
- Defines a character string comment applied to each cross-product element added to the local endpoint map. The string can be up to 64 characters long, including the null-terminating character. If the application specifies an empty string (""), each cross-product element will contain an empty string.
- Returns the status code from this routine. The status code indicates whether the routine completed successfully, or if not, why not.
Possible status codes and their meanings include:
Cannot perform requested operation.
The rpc_ep_register_no_replace() routine adds elements to the local host's endpoint map. The routine does not replace existing elements. Otherwise, this routine is identical to routine rpc_ep_register(). A server application uses this routine, instead of routine rpc_ep_register(), when multiple instances of the server run on the same host. Servers should use this routine if, at any time, more than one server instance offers the same interface UUID, object UUID, and protocol sequence.
- Servers should call rpc_ep_unregister() before they stop running to remove their endpoints from the local endpoint map. When obsolete elements are left in the endpoint map, clients may waste time trying to communicate with non-existent servers. Obsolete elements, left by servers that have stopped without calling rpc_ep_unregister(), are periodically removed from the local endpoint map. However, during the time between these removals, the obsolete elements increase the chance that a client will attempt to communicate with a non-existent server.
A server program calls this routine to register endpoints that were specified by calling any of the following routines:
- rpc_server_use_all_protseqs() rpc_server_use_all_protseqs_if() rpc_server_use_protseq() rpc_server_use_protseq_ep()
- If the server also exports to the name service database, the server calls this routine with the same if_handle, binding_vec and object_uuid_vec arguments as the server uses when calling the rpc_ns_binding_export() routine.
The rpc_ep_register routine creates elements to add to the local endpoint map as a cross-product of the if_handle, binding_vec and object_uuid_vec arguments.
When the object_uuid_vec argument is NULL, the cross-product of if_handle, binding_vec and the nil type UUID is created.
The annotation string is also included in each cross-product element. The string is used by applications for informational purposes only. The RPC run-time system does not use it to determine which server instance a client communicates with, or for enumerating endpoint map elements.
tagmref_rpc_ep_registercontains an example of a cross-product.
Please note that the html version of this specification may contain formatting aberrations. The definitive version is available as an electronic publication on CD-ROM from The Open Group.