Table 3 describes utility functions provided by the API. The DR_FDPoll family of functions allow callback-based modules to use nonblocking socket operations. These functions allow external communication without blocking and without requiring modules to implement their own event management infrastructure; instead, such modules can simply utilize the underlying event mechanisms of the OS and host proxy. In particular, the ReadNotify and WriteNotify calls register functions that should be invoked when an event (either data available to read or space available to be written, respectively) takes place on a given file descriptor. The ReadClear and WriteClear functions indicate that the previously registered function should no longer be called, and the Close function indicates that the file descriptor in question has been closed and all currently registered notifications should be deregistered. All of these functions can be implemented using poll, select, kevent, /dev/poll, or other OS-specific mechanisms; their only requirement is that the underlying OS support the notion of file descriptors and some form of event notification, which are common to all standard systems.
The custom logging functions provide canonical names for the codes passed by the proxy to module functions for log notifications. DR_ConfigOptionFind allows the user module to extract desired information from the cache configuration files.