Rudiments
|
Inherits socketserver, and unixsocketutil.
Public Member Functions | |
unixsocketserver () | |
virtual | ~unixsocketserver () |
bool | listen (const char *filename, mode_t mask, uint32_t backlog) |
void | setMask (mode_t mask) |
mode_t | getMask () |
bool | open () |
bool | bind () |
bool | listen () |
filedescriptor * | accept () |
bool | close () |
Public Member Functions inherited from socketserver | |
socketserver () | |
virtual | ~socketserver () |
virtual bool | supportsBlockingAndNonBlockingModes () |
virtual bool | setNonBlockingMode (bool nonblockingmode) |
virtual bool | getNonBlockingMode () |
virtual int32_t | ioCtl (int32_t command, void *arg) |
bool | setLingerOnClose (bool enable, int32_t timeout) |
bool | getLingerOnClose () |
int32_t | getLingerOnCloseTimeout () |
bool | setReuseAddresses (bool reuse) |
virtual bool | listen (int32_t backlog) |
Public Member Functions inherited from server | |
server () | |
virtual | ~server () |
void | setBacklog (uint32_t backlog) |
uint32_t | getBacklog () |
Public Member Functions inherited from filedescriptor | |
filedescriptor () | |
virtual | ~filedescriptor () |
int32_t | getFileDescriptor () |
void | setFileDescriptor (int32_t filedesc) |
bool | setIsStream (bool isstream) |
bool | getIsStream () |
int32_t | duplicate () |
bool | duplicate (int32_t newfd) |
void | setSocketLayer (socketlayer *layer) |
socketlayer * | getSocketLayer () |
virtual off64_t | getPosition () |
virtual off64_t | setPositionRelativeToBeginning (off64_t offset) |
virtual off64_t | setPositionRelativeToCurrent (off64_t offset) |
virtual off64_t | setPositionRelativeToEnd (off64_t offset) |
ssize_t | write (uint16_t number) |
ssize_t | write (uint32_t number) |
ssize_t | write (uint64_t number) |
ssize_t | write (int16_t number) |
ssize_t | write (int32_t number) |
ssize_t | write (int64_t number) |
ssize_t | write (float number) |
ssize_t | write (double number) |
ssize_t | write (byte_t character) |
ssize_t | write (char character) |
ssize_t | write (wchar_t character) |
ssize_t | writeUcs2 (ucs2_t character) |
ssize_t | write (bool value) |
ssize_t | write (const byte_t *string) |
ssize_t | write (const char *string) |
ssize_t | write (const wchar_t *string) |
ssize_t | writeUcs2 (const ucs2_t *string) |
ssize_t | write (const byte_t *string, size_t size) |
ssize_t | write (const char *string, size_t length) |
ssize_t | write (const wchar_t *string, size_t length) |
ssize_t | writeUcs2 (const ucs2_t *string, size_t length) |
ssize_t | write (const void *buffer, size_t size) |
ssize_t | write (uint16_t number, int32_t sec, int32_t usec) |
ssize_t | write (uint32_t number, int32_t sec, int32_t usec) |
ssize_t | write (uint64_t number, int32_t sec, int32_t usec) |
ssize_t | write (int16_t number, int32_t sec, int32_t usec) |
ssize_t | write (int32_t number, int32_t sec, int32_t usec) |
ssize_t | write (int64_t number, int32_t sec, int32_t usec) |
ssize_t | write (float number, int32_t sec, int32_t usec) |
ssize_t | write (double number, int32_t sec, int32_t usec) |
ssize_t | write (byte_t character, int32_t sec, int32_t usec) |
ssize_t | write (char character, int32_t sec, int32_t usec) |
ssize_t | write (wchar_t character, int32_t sec, int32_t usec) |
ssize_t | writeUcs2 (ucs2_t character, int32_t sec, int32_t usec) |
ssize_t | write (bool value, int32_t sec, int32_t usec) |
ssize_t | write (const byte_t *string, int32_t sec, int32_t usec) |
ssize_t | write (const char *string, int32_t sec, int32_t usec) |
ssize_t | write (const wchar_t *string, int32_t sec, int32_t usec) |
ssize_t | writeUcs2 (const ucs2_t *string, int32_t sec, int32_t usec) |
ssize_t | write (const byte_t *string, size_t size, int32_t sec, int32_t usec) |
ssize_t | write (const char *string, size_t length, int32_t sec, int32_t usec) |
ssize_t | write (const wchar_t *string, size_t length, int32_t sec, int32_t usec) |
ssize_t | writeUcs2 (const ucs2_t *string, size_t length, int32_t sec, int32_t usec) |
ssize_t | write (const void *buffer, size_t size, int32_t sec, int32_t usec) |
ssize_t | read (uint16_t *buffer) |
ssize_t | read (uint32_t *buffer) |
ssize_t | read (uint64_t *buffer) |
ssize_t | read (int16_t *buffer) |
ssize_t | read (int32_t *buffer) |
ssize_t | read (int64_t *buffer) |
ssize_t | read (float *buffer) |
ssize_t | read (double *buffer) |
ssize_t | read (byte_t *buffer) |
ssize_t | read (char *buffer) |
ssize_t | read (wchar_t *buffer) |
ssize_t | readUcs2 (ucs2_t *buffer) |
ssize_t | read (bool *buffer) |
ssize_t | read (byte_t *buffer, size_t size) |
ssize_t | read (char *buffer, size_t length) |
ssize_t | read (wchar_t *buffer, size_t length) |
ssize_t | readUcs2 (ucs2_t *buffer, size_t length) |
ssize_t | read (void *buf, size_t size) |
ssize_t | read (char **buffer, const char *terminator) |
ssize_t | read (char **buffer, const char *terminator, size_t maxbytes) |
ssize_t | read (uint16_t *buffer, int32_t sec, int32_t usec) |
ssize_t | read (uint32_t *buffer, int32_t sec, int32_t usec) |
ssize_t | read (uint64_t *buffer, int32_t sec, int32_t usec) |
ssize_t | read (int16_t *buffer, int32_t sec, int32_t usec) |
ssize_t | read (int32_t *buffer, int32_t sec, int32_t usec) |
ssize_t | read (int64_t *buffer, int32_t sec, int32_t usec) |
ssize_t | read (float *buffer, int32_t sec, int32_t usec) |
ssize_t | read (double *buffer, int32_t sec, int32_t usec) |
ssize_t | read (byte_t *buffer, int32_t sec, int32_t usec) |
ssize_t | read (char *buffer, int32_t sec, int32_t usec) |
ssize_t | read (wchar_t *buffer, int32_t sec, int32_t usec) |
ssize_t | readUcs2 (ucs2_t *buffer, int32_t sec, int32_t usec) |
ssize_t | read (bool *buffer, int32_t sec, int32_t usec) |
ssize_t | read (byte_t *buffer, size_t size, int32_t sec, int32_t usec) |
ssize_t | read (char *buffer, size_t length, int32_t sec, int32_t usec) |
ssize_t | read (wchar_t *buffer, size_t length, int32_t sec, int32_t usec) |
ssize_t | readUcs2 (ucs2_t *buffer, size_t length, int32_t sec, int32_t usec) |
ssize_t | read (void *buf, size_t size, int32_t sec, int32_t usec) |
ssize_t | read (char **buffer, const char *terminator, int32_t sec, int32_t usec) |
ssize_t | read (char **buffer, const char *terminator, size_t maxbytes, int32_t sec, int32_t usec) |
ssize_t | read (char **buffer, const char *terminator, size_t maxbytes, char escapechar, int32_t sec, int32_t usec) |
int32_t | waitForNonBlockingRead (int32_t sec, int32_t usec) |
int32_t | waitForNonBlockingWrite (int32_t sec, int32_t usec) |
void | setRetryInterruptedReads (bool retry) |
bool | getRetryInterruptedReads () |
void | setRetryInterruptedWrites (bool retry) |
bool | getRetryInterruptedWrites () |
void | setRetryInterruptedWaits (bool retry) |
bool | getRetryInterruptedWaits () |
void | setRetryInterruptedFcntl (bool retry) |
bool | getRetryInterruptedFcntl () |
void | setRetryInterruptedIoctl (bool retry) |
bool | getRetryInterruptedIoctl () |
void | setAllowShortReads (bool allow) |
bool | getAllowShortReads () |
void | setAllowShortWrites (bool allow) |
bool | getAllowShortWrites () |
virtual bool | passFileDescriptor (int32_t fd) |
virtual bool | receiveFileDescriptor (int32_t *fd) |
virtual bool | passSocket (int32_t sock) |
virtual bool | receiveSocket (int32_t *sock) |
void | setTranslateByteOrder (bool translate) |
bool | getTranslateByteOrder () |
virtual int32_t | fCntl (int32_t command, long arg) |
bool | setNaglesAlgorithmEnabled (bool enabled) |
bool | getNaglesAlgorithmEnabled () |
bool | setSocketWriteBufferSize (int32_t size) |
bool | getSocketWriteBufferSize (int32_t *size) |
bool | setSocketReadBufferSize (int32_t size) |
bool | getSocketReadBufferSize (int32_t *size) |
bool | disableIPv4 () |
bool | enableIPv4 () |
const char * | getType () |
char * | getPeerAddress () |
bool | setWriteBufferSize (size_t size) |
size_t | getWriteBufferSize () |
bool | flushWriteBuffer (int32_t sec, int32_t usec) |
bool | setReadBufferSize (size_t size) |
size_t | getReadBufferSize () |
void | setMmapBufferingEnabled (bool enabled) |
bool | getMmapBufferingEnabled () |
bool | isCurrentBlockMmapBuffered () |
off64_t | getCurrentBlockOffset () |
bool | setCloseOnExec (bool close) |
bool | getCloseOnExec () |
Public Member Functions inherited from input | |
input () | |
virtual | ~input () |
ssize_t | read (char **buffer, const char *terminator) |
ssize_t | read (char **buffer, const char *terminator, size_t maxbytes) |
ssize_t | read (char **buffer, const char *terminator, int32_t sec, int32_t usec) |
ssize_t | read (char **buffer, const char *terminator, size_t maxbytes, int32_t sec, int32_t usec) |
ssize_t | read (char **buffer, const char *terminator, size_t maxbytes, char escapechar, int32_t sec, int32_t usec) |
Public Member Functions inherited from object | |
virtual | ~object () |
Public Member Functions inherited from output | |
output () | |
virtual | ~output () |
virtual ssize_t | printf (const char *format,...) |
virtual ssize_t | printf (const char *format, va_list *argp) |
virtual ssize_t | printf (const wchar_t *format,...) |
virtual ssize_t | printf (const wchar_t *format, va_list *argp) |
virtual ssize_t | printfUcs2 (const ucs2_t *format,...) |
virtual ssize_t | printfUcs2 (const ucs2_t *format, va_list *argp) |
void | safePrint (byte_t c) |
void | safePrint (const byte_t *str) |
void | safePrint (const byte_t *str, int32_t length) |
void | safePrint (char c) |
void | safePrint (const char *str) |
void | safePrint (const char *str, int32_t length) |
void | printBits (byte_t value) |
void | printBits (uint16_t value) |
void | printBits (uint32_t value) |
void | printBits (uint64_t value) |
void | printBits (char value) |
void | printBits (int16_t value) |
void | printBits (int32_t value) |
void | printBits (int64_t value) |
void | printBits (const byte_t *bits, uint64_t size) |
void | printHex (const byte_t *data, uint64_t size) |
void | printHex (const byte_t *data, uint64_t size, uint16_t indent) |
Additional Inherited Members | |
Static Public Member Functions inherited from filedescriptor | |
static bool | supportsPassAndReceiveFileDescriptor () |
static bool | supportsPassAndReceiveSocket () |
static bool | createPipe (filedescriptor *readfd, filedescriptor *writefd) |
static uint16_t | convertHostToNet (uint16_t value) |
static uint32_t | convertHostToNet (uint32_t value) |
static uint64_t | convertHostToNet (uint64_t value) |
static uint16_t | convertNetToHost (uint16_t value) |
static uint32_t | convertNetToHost (uint32_t value) |
static uint64_t | convertNetToHost (uint64_t value) |
static uint16_t | convertHostToLittleEndian (uint16_t value) |
static uint32_t | convertHostToLittleEndian (uint32_t value) |
static uint64_t | convertHostToLittleEndian (uint64_t value) |
static uint16_t | convertLittleEndianToHost (uint16_t value) |
static uint32_t | convertLittleEndianToHost (uint32_t value) |
static uint64_t | convertLittleEndianToHost (uint64_t value) |
The unixsocketserver class allows you to write programs that can talk to other programs on the same machine over TCP stream sockets.
Inet sockets (see the inetsocketserver class) can be used by clients and servers on the same machine as well, but Unix sockets generally perform better.
Some platforms (line Windows) don't support Unix sockets. For those platforms, Unix sockets are simulated using Inet sockets on localhost by translating the socket filename to a port. See unixsocketutil::filenameToPort() for details.
The unixsocketserver class provides methods for setting up sockets and accepting client connections. Its ultimate parent class: transport, provides methods for reading and writing data and closing connections. An immediate parent class: unixsocket provides methods for passing file descriptors between connected instances of unixservertsocket's and unixsocketclient's.
If you need to listen on more than 1 socket at a time, you should use the unixsocketserver class (and possibly the unixsocketserver class) in conjunction with the listener class.
unixsocketserver::unixsocketserver | ( | ) |
Creates an instance of the unixsocketserver class.
|
virtual |
Deletes this instance of the unixsocketserver class.
|
virtual |
Removes the client connection from the queue and associates a new socket with that connection. Communication with the client may be done over this new socket.
Returns an unixsocketclient on success and NULL on failure.
Reimplemented from server.
|
virtual |
Associates the socket with a file and sets permissions on that file.
Returns true on success and false on failure.
Reimplemented from server.
|
virtual |
Closes the socket. Returns true on success and false on failure.
Reimplemented from filedescriptor.
mode_t unixsocketserver::getMask | ( | ) |
Returns the umask that will be used when associating the socket with a file.
|
virtual |
Waits until a client connects then places that connection in queue. Up to "backlog" connections may be queued before future conenctions are refused.
Returns true on success and false on failure.
Reimplemented from server.
bool unixsocketserver::listen | ( | const char * | filename, |
mode_t | mask, | ||
uint32_t | backlog | ||
) |
Convenience method that calls open(), bind() and listen(). If you need to set socket options or do anything else special between those discrete steps then you should use the methods individually.
Listen on "filename" and allow "backlog" connections to pile up before refusing them. Set the permissions on "filename" using umask "mask".
Returns true on success and false on failure.
bool unixsocketserver::open | ( | ) |
Creates the actual socket and initializes the instance to use "filename" when bind() is called. The permissions on "filename" will be set using umask "mask".
Returns true on success and false on failure.
void unixsocketserver::setMask | ( | mode_t | mask | ) |
Sets the umask that will be used when associating the socket with a file.