Both types, |union sockaddr_any| and |struct sockaddr_storage|, provide
a sockaddr type that can hold any address. The latter is standardized by
POSIX, so we prefer it.
With this patch, it's not an error if the connection operations
stalls on a non-blocking socket; so don't return an error code.
The patch also makes |connect| restart if it was aborted by a
signal.
Sockets in listen mode may only be created and bound once. This patch fixes
|unixSocketWatcher::Listen| to respect these contraints. Listening more than
once will reuse the settings from the first listen operation.
We cannot use blocking file-descriptor I/O on the I/O thread. This
patch adds an assertion to UnixFdWatcher the tests for the O_NONBLOCK
flag, when installing a file descriptor. In UnixFileWatcher, the
Open method tests for the O_NONBLOCK flag for the opened file.
File-descriptor flags for UnixSocketImpl et al are currently set by
UnixSocketImpl itself. Later patches should move this into the
methods of connector classes.
These new classes encasulate file-descriptor watchers, basic file
descriptors, and socket connections. Each class contains callback
methods for it's implemented functionality. Users should inherit
from the classes and overload the callback with their own code.