OSF DCE Application Development Guide--Core Components
Topics in RPC Application Development
How the runtime handles a given request depends partly on the communications protocol
over which it arrives, as follows:
• A call over a connectionless transport is routed by the server’s system to the call
request buffer for the endpoint specified in the call.
• A call over a connection-oriented transport may be routed by the server’s system to a
request buffer or the call may go directly to the server process.
Whether a remote procedure call goes to the request buffer depends on whether the
client sends the call over an established connection. If a client makes a remote
procedure call without an established connection, the server’s system treats the call
request as a connection request and places the call request into a request buffer. If an
established connection is available, the client uses it for the remote procedure call;
the system handles the call as an incoming call and sends it directly to the server
process that owns the connection.
Whether a server gets an incoming call from a request buffer or over an existing
connection, the server process manages the call identically. A server process applies a
clear set of call-routing criteria to decide whether to dispatch a call immediately, queue
it, or reject it (if the server is extremely busy). These call-routing criteria are discussed
in Section 16.6.3.
When telling the RPC runtime to use a protocol sequence, a server specifies the number
of calls it can buffer for the specified communications protocol (at a given endpoint).
Usually, it is best for a server to specify a default buffer size, represented by a literal
whose underlying value depends on the communications protocol. The default equals
the capacity of a single socket used for the protocol by the server’s system.
The default usually is adequate to allow the RPC runtime to accept all the incoming call
requests. For a well-known endpoint, the size of a request buffer cannot exceed the
capacity of a single socket descriptor (the default size); specifying a higher number
causes a runtime error. For well-known endpoints, specify the default for the maximum
number of call requests.
For example, consider the request buffer at full capacity as represented in Figure 16-6.
This buffer has the capacity to store five requests. In this example, the buffer is full, and
the runtime rejects incoming requests, as is happening to the sixth request.
124245 Tandem Computers Incorporated 16− 41