The above implementations of an Assuan client and server are synchronous, insofar as the main routines block until a request or client connection is completely processed. In some programs, for example GUI applications, this is undesirable. Instead, Assuan operations should be non-blocking, and the caller should be able to poll all involved file descriptors to determine when the next Assuan function can be invoked without blocking.
To make this possible, client and server have to adhere to some rules:
Together, these restrictions allow to limit the need for asynchronous I/O operations to bulk data and the inbound status file descriptor.
In addition to the above rules, client and server should adhere to the following implementation guidelines.
|• External I/O Loop Client:||External I/O event loops in the client.|
|• External I/O Loop Server:||External I/O event loops in the server.|