rpc_ns_binding_import_next(3rpc)Returns a binding handle of a compatible server (if found) from the name service database Used by client applications. Synopsis #include <dce/rpc.h> void rpc_ns_binding_import_next( rpc_ns_handle_t import_context, rpc_binding_handle_t *binding, unsigned32 *status); Parameters Input
import_context Output
binding
status
Description A similar routine is rpc_ns_binding_lookup_next( ), which returns a vector of compatible server binding handles for one or more servers. Note:Routine rpc_ns_binding_import_next( ) calls routine rpc_ns_binding_lookup_next( ) which, in turn, obtains a vector of server binding handles from the name service atabase. Next, routine rpc_ns_binding_import_next( ) randomly selects one of the elements from the vector. The rpc_ns_binding_import_next( ) routine communicates only with the name service database, not directly with servers. The returned compatible binding handle always contains an object UUID. Its value depends on the value specified in the obj_uuid parameter of the rpc_ns_binding_import_begin( ) routine, as follows: · If obj_uuid contains a non-nil object UUID, the returned binding handle contains that object UUID. · If obj_uuid contains a nil object UUID or NULL, the object UUID returned in the binding handle depends on how the server exported object UUIDs: - If the server did not export any object UUIDs, the returned binding handle contains a nil object UUID. - If the server exported one object UUID, the returned binding handle contains that object UUID. - If the server exported multiple object UUIDs, the returned binding handle contains one of the object UUIDs, selected in an unspecified way. Applications should not count on multiple calls to rpc_ns_binding_import_next( ) returning different object UUIDs. In particular, note that each name service entry stores server address information separately from exported object UUIDs. Successive calls to rpc_ns_binding_import_next( ) using the same import context will return exactly one binding for each compatible server address, not the cross product of all compatible server addresses with all exported UUIDs. Each returned binding will contain one of the exported object UUIDs, but applications should not count on any specific selection mechanism for these object UUIDs The client application can use the returned binding handle to make a remote procedure call to the server. If the client fails to communicate with the server, it can call the rpc_ns_binding_import_next( ) routine again. Each time the client calls rpc_ns_binding_import_next( ), the routine returns another server binding handle. The binding handles returned are unordered. Multiple binding handles can refer to different protocol sequences from the same server. When the search finishes, the routine returns a status code of rpc_s_no_more_bindings and returns the value NULL in binding. A client application calls rpc_ns_binding_inq_entry_name( ) to obtain the name of the entry in the name service database where the binding handle came from. The rpc_ns_binding_import_next( ) routine allocates memory for the returned binding parameter. When a client application finishes with the binding handle, it must call rpc_binding_free( ) to deallocate the memory. Each call to rpc_ns_binding_import_next( ) requires a corresponding call to rpc_binding_free( ). The client calls the rpc_ns_binding_import_done( ) routine after it has satisfactorily used one or more returned server binding handles. The rpc_ns_binding_import_done( ) routine deletes the import context. The client also calls rpc_ns_binding_import_done( ) if the application wants to start a new search for compatible servers (by calling rpc_ns_binding_import_begin( )). The order of binding handles returned can be different for each new search. This means that the order in which binding handles are returned to an application can be different each time the application is run.
Permissions Required
Return Values Errors The following describes a partial list of errors that might be returned. Refer to the OSF DCE Problem Determination Guide for complete descriptions of all error messages.
rpc_s_ok
rpc_s_class_version_mismatch
rpc_s_entry_not_found
rpc_s_invalid_ns_handle
rpc_s_name_service_unavailable
rpc_s_no_more_bindings
rpc_s_no_ns_permission
rpc_s_not_rpc_entry
Related Information rpc_ns_binding_import_done(3rpc) rpc_ns_binding_inq_entry_name(3rpc) rpc_ns_binding_lookup_begin(3rpc) rpc_ns_binding_lookup_done(3rpc) rpc_ns_binding_lookup_next(3rpc)
|