PreviousNext

Returning the Results and Resuming Listening

At the completion of the operation, the RPC thread that was automatically spawned to execute it is terminated by the RPC runtime. As far as the server is concerned, it is still blocking on the call to rpc_server_listen( ) which was made earlier. If max_calls_exec was specified to be greater than 1 in that call, other threads may still be executing at this time in response to other requests that have been received from other clients. In any case, the call to rpc_server_listen( ) will not return until one of the server's own management routines, or a client, makes a successful call to rpc_mgmt_stop_server_listening( ). If this happens, the RPC runtime will stop accepting incoming client requests to the server. When all the currently executing operations have been completed, the call to rpc_server_listen( ) will return.

The other way that execution can be thrown out of the rpc_server_listen( ) call is as a result of a signal or exception.

From the server's point of view, the result of completing the remotely called routine is that it reenters the listen loop, waiting for further remote calls. The server's runtime handles all the communications details of actually sending any requested data to the client.

From the client's point of view, the server's return at the end of its remotely called routine results in the client's returning from a seemingly locally executed routine.

More:

Continuing