PreviousNext

rpc_server_use_protseq_if(3rpc)

Tells the RPC runtime to use the specified protocol sequence combined with the endpoints in the interface specification for receiving remote procedure calls

Used by server applications.

Synopsis

#include <dce/rpc.h>

void rpc_server_use_protseq_if(

unsigned_char_t *protseq,

unsigned32 max_call_requests,

rpc_if_handle_t if_handle,

unsigned32 *status);

Parameters

Input

protseq
Specifies a string identifier for the protocol sequence to register with the RPC runtime. For a list of string identifiers, see the table of valid protocol sequences in rpc_intro(3rpc).

max_call_requests
Specifies the maximum number of concurrent remote procedure call requests that the server can accept.

The RPC runtime guarantees that the server can accept at least this number of concurrent call requests. The actual number of these requests can be greater than the value of max_call_requests and can vary for each protocol sequence.

Use the value rpc_c_protseq_max_reqs_default to specify the default parameter value.

Note that in this version of DCE RPC, any number you specify is replaced by the default value.

Also, the rpc_server_listen( ) routine limits (according to its max_calls_exec parameter) the amount of concurrent remote procedure call execution. See rpc_server_listen(3rpc) for more information.

if_handle
Specifies an interface specification whose endpoint information is used in creating a binding for the protocol sequence specified in the protseq parameter. Each created binding handle contains a well-known (nondynamic) endpoint contained in the interface specification.

Output

status
Returns the status code from this routine. This status code indicates whether the routine completed successfully or, if not, why not.

Description
The rpc_server_use_protseq_if( ) routine registers one protocol sequence with the RPC runtime, including its endpoint address information as provided in the specified IDL file.

A server must register at least one protocol sequence with the RPC runtime to receive remote procedure call requests. A server can call this routine multiple times to register additional protocol sequences. For each protocol sequence registered by a server, the RPC runtime creates one or more binding handles. Each binding handle contains the well-known endpoint specified in the IDL file.

The max_call_requests parameter allows you to specify the maximum number of concurrent remote procedure call requests the server handles.

To register all protocol sequences from the IDL, a server calls the rpc_server_use_all_protseqs_if( ) routine.

The explanation of rpc_server_use_all_protseqs( ) contains a list of the routines a server typically calls after calling this routine. However, a server that uses only rpc_server_use_protseq_if( ) does not subsequently call rpc_ep_register( ) or rpc_ep_register_no_replace( ). For an explanation of how a server can establish a client/server relationship without using the local endpoint map or the name service database, see the information on string bindings in rpc_intro(3rpc).

Return Values
No value is returned.

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
Success.

rpc_s_calls_too_large_for_wk_ep
Maximum concurrent calls too large.

rpc_s_cant_bind_socket
Cannot bind to socket.

rpc_s_invalid_endpoint_format
Invalid endpoint format.

rpc_s_invalid_rpc_protseq
Invalid protocol sequence.

rpc_s_max_descs_exceeded
Exceeded maximum number of network descriptors.

rpc_s_protseq_not_supported
Protocol sequence not supported on this host.

Related Information
Functions: rpc_binding_vector_free(3rpc)

rpc_ep_register(3rpc)

rpc_ep_register_no_replace(3rpc)

rpc_ns_binding_export(3rpc)

rpc_server_inq_bindings(3rpc)

rpc_server_listen(3rpc)

rpc_server_register_if(3rpc)

rpc_server_use_all_protseqs(3rpc)

rpc_server_use_all_protseqs_if(3rpc)

rpc_server_use_protseq(3rpc)

rpc_server_use_protseq_ep(3rpc)