The following topic discusses routing incoming remote procedure calls between their arrival at a server's system and the server's invocation of the requested remote procedure. The following routing steps are discussed:
1. If a client has a partially bound server binding handle, before sending a call request to a server, the client runtime must get the endpoint of a compatible server from the endpoint mapper service of the server's system. This endpoint becomes the server address for a call request.
2. When the request arrives at the endpoint, the server's system places it in a request buffer belonging to the corresponding server.
3. As one of its scheduled tasks, the server gets the incoming calls from the request buffer. The server either accepts or rejects an incoming call, depending on available resources. If no call thread is available, an accepted call is queued to wait its turn for an available call thread.
4. The server then allocates an available call thread to the call.
5. The server identifies the appropriate manager for the called remote procedure and invokes the procedure in that manager to execute the call.
6. When the call thread finishes executing a call, the server returns the call's output arguments and control to the client.
The following figure illustrates these steps.
Steps in Routing Remote Procedure Calls
The concepts in the following topics are for the advanced RPC developer. The first topic discusses how clients obtain endpoints when using partially bound binding handles. Then we discuss how a system buffers call requests and how a server queues incoming calls; this information is relevant mainly to advanced RPC developers. The final topic discusses how a server selects the manager to execute a call; it is relevant for developing an application that implements an interface for different types of RPC objects.
More: