This type of custom server handles a request to completion, or to such a state where it is waiting for an asynchronous event and is free for some other activity. This means that requests that can take a comparatively long time to return do not introduce performance limiting delays when using multiple channels simultaneously.
In this model, the main loop normally uses CA_Poll() in place of CA_Receive_DT_Msg(). The custom server will need to wait not only for requests from channel processes, but also for other events, such as voice data becoming available for a CA_Record_Voice_Stream(), or interprocess communication from other processes or programs. CA_Receive_DT_Msg() is called only when CA_Poll() has returned the information that requests from a channel process are waiting, and is normally called with CA_NOWAIT set.
In this model, the custom server is not handling a single request to completion, but is swapping between a number of requests, so it will normally need to maintain some data for each open link.
The advantages of single-process nonblocking operation are that:
The disadvantages of single-process nonblocking operation are that: