modemserver Class Reference

Inherits server, and modemutil.

## Public Member Functions

| modemserver ()
| modemserver (const modemserver &m)
modemserver & | operator= (const modemserver &m)
virtual | ~modemserver ()
bool | listen (const char *device, const char *baud, const char *listenscript, const char *acceptscript, const char *disconnectscript)
void | initialize (const char *device, const char *baud, const char *listenscript, const char *acceptscript, const char *disconnectscript)
bool | listen (int32_t backlog)
filedescriptor * | accept ()
bool | close ()
Public Member Functions inherited from server
| server ()
| server (const server &s)
server & | operator= (const server &s)
virtual | ~server ()
virtual bool | bind ()
Public Member Functions inherited from filedescriptor
| filedescriptor ()
| filedescriptor (const filedescriptor &f)
filedescriptor & | operator= (const filedescriptor &f)
virtual | ~filedescriptor ()
int32_t | getFileDescriptor () const
void | setFileDescriptor (int32_t filedesc)
int32_t | duplicate () const
bool | duplicate (int32_t newfd) const
void | setSecurityContext (securitycontext *ctx)
securitycontext * | getSecurityContext ()
virtual bool | supportsBlockingNonBlockingModes ()
virtual bool | useNonBlockingMode () const
virtual bool | useBlockingMode () const
virtual bool | isUsingNonBlockingMode () const
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 (unsigned char character)
ssize_t | write (char character)
ssize_t | write (bool value)
ssize_t | write (const unsigned char *string)
ssize_t | write (const char *string)
ssize_t | write (const unsigned char *string, size_t size)
ssize_t | write (const char *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 (unsigned char character, int32_t sec, int32_t usec)
ssize_t | write (char character, int32_t sec, int32_t usec)
ssize_t | write (bool value, int32_t sec, int32_t usec)
ssize_t | write (const unsigned char *string, int32_t sec, int32_t usec)
ssize_t | write (const char *string, int32_t sec, int32_t usec)
ssize_t | write (const unsigned char *string, size_t size, int32_t sec, int32_t usec)
ssize_t | write (const char *string, size_t size, int32_t sec, int32_t usec)
ssize_t | write (const void *buffer, size_t size, int32_t sec, int32_t usec)
size_t | printf (const char *format,...)
size_t | printf (const char *format, va_list *argp)
void | safePrint (unsigned char c)
void | safePrint (const unsigned char *str)
void | safePrint (const unsigned char *str, int32_t length)
void | safePrint (char c)
void | safePrint (const char *str)
void | safePrint (const char *str, int32_t length)
void | printBits (unsigned char 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 unsigned char *bits, uint64_t size)
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 (unsigned char *buffer)
ssize_t | read (char *buffer)
ssize_t | read (bool *buffer)
ssize_t | read (unsigned char *buffer, size_t size)
ssize_t | read (char *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 (unsigned char *buffer, int32_t sec, int32_t usec)
ssize_t | read (char *buffer, int32_t sec, int32_t usec)
ssize_t | read (bool *buffer, int32_t sec, int32_t usec)
ssize_t | read (unsigned char *buffer, size_t size, int32_t sec, int32_t usec)
ssize_t | read (char *buffer, size_t size, 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) const
int32_t | waitForNonBlockingWrite (int32_t sec, int32_t usec) const
void | retryInterruptedReads ()
void | dontRetryInterruptedReads ()
bool | getRetryInterruptedReads () const
void | retryInterruptedWrites ()
void | dontRetryInterruptedWrites ()
bool | getRetryInterruptedWrites () const
void | retryInterruptedWaits ()
void | dontRetryInterruptedWaits ()
bool | getRetryInterruptedWaits () const
void | retryInterruptedFcntl ()
void | dontRetryInterruptedFcntl ()
bool | getRetryInterruptedFcntl () const
void | retryInterruptedIoctl ()
void | dontRetryInterruptedIoctl ()
bool | getRetryInterruptedIoctl () const
void | allowShortReads ()
void | dontAllowShortReads ()
void | allowShortWrites ()
void | dontAllowShortWrites ()
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 | translateByteOrder ()
void | dontTranslateByteOrder ()
virtual int32_t | fCntl (int32_t command, long arg) const
virtual int32_t | ioCtl (int32_t command, void *arg) const
bool | useNaglesAlgorithm ()
bool | dontUseNaglesAlgorithm ()
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 () const
char * | getPeerAddress () const
bool | setWriteBufferSize (ssize_t size) const
bool | flushWriteBuffer (int32_t sec, int32_t usec)
bool | setReadBufferSize (ssize_t size) const
bool | closeOnExec ()
bool | dontCloseOnExec ()
bool | getCloseOnExec ()

## Additional Inherited Members

Static Public Member Functions inherited from filedescriptor
static bool | createPipe (filedescriptor *readfd, filedescriptor *writefd)
static uint16_t | hostToNet (uint16_t value)
static uint32_t | hostToNet (uint32_t value)
static uint64_t | hostToNet (uint64_t value)
static uint16_t | netToHost (uint16_t value)
static uint32_t | netToHost (uint32_t value)
static uint64_t | netToHost (uint64_t value)
static uint16_t | hostToLittleEndian (uint16_t value)
static uint32_t | hostToLittleEndian (uint32_t value)
static uint64_t | hostToLittleEndian (uint64_t value)
static uint16_t | littleEndianToHost (uint16_t value)
static uint32_t | littleEndianToHost (uint32_t value)
static uint64_t | littleEndianToHost (uint64_t value)

## Detailed Description

The modemserver class allows you to write programs taht can talk to other programs across a direct serial modem connection.

The modemserver class provides methods for setting up a modem and accepting client connections. Its ultimate parent class, filedescriptor, provides methods for reading and writing data.

If you need to listen on more than one modem at a time or a combination of modems and other file descriptors (such as sockets), then you should use the modemserver class in conjunction with the listener class.

## Constructor & Destructor Documentation

## modemserver() [1/2]

modemserver::modemserver | ( |  | ) |

Creates an instance of the modemserver class.

## modemserver() [2/2]

modemserver::modemserver | ( | const modemserver & | m | ) |

Creates an instance of the modemserver class that is a copy of "m".

## ~modemserver()

virtual modemserver::~modemserver | ( |  | ) |

virtual

Deletes this instance of the modemserver class.

## Member Function Documentation

## accept()

filedescriptor* modemserver::accept | ( |  | ) |

virtual

Waits for a client connection. When a client connects, it runs "acceptscript" which was set in the call to initialize().

Returns true on success and false on failure.

Reimplemented from server.

## close()

bool modemserver::close | ( |  | ) |

virtual

Runs "disconnectscript" which was set in the call to initialize() and closes the device.

Returns true on success and false on failure.

Reimplemented from filedescriptor.

## initialize()

void modemserver::initialize | ( | const char * | device,
|  | const char * | baud,
|  | const char * | listenscript,
|  | const char * | acceptscript,
|  | const char * | disconnectscript
| ) |  |

Initializes the class to opens "device", set the baud rate to "baud", and run "listenscript" when listen() is called. When a client connects, "acceptscript" will be run. When the client disconnects, "disconnecctscript" will be run.

Returns true on success and false on failure.

## listen() [1/2]

bool modemserver::listen | ( | const char * | device,
|  | const char * | baud,
|  | const char * | listenscript,
|  | const char * | acceptscript,
|  | const char * | disconnectscript
| ) |  |

Convenience method that calls initialize(), bind(), and listen(). If you need to do anything special between those discrete steps, then you should use the methods individually.

Opens "device", sets the baud rate to "baud", then runs "listenscript". When a client connects, "acceptscript" will be run. When the client disconnects, "disconnecctscript" will be run.

Returns true on success and false on failure.

## listen() [2/2]

bool modemserver::listen | ( | int32_t | backlog | ) |

virtual

Opens the device set in the call to initalize(), sets the baud rate and runs "listenscript".

Returns true on success and false on failure.

Reimplemented from server.

## operator=()

modemserver& modemserver::operator= | ( | const modemserver & | m | ) |

Makes this instance of the modemserver class identical to "m".