Rudiments
Public Member Functions | List of all members
modemserver Class Reference

Inherits server, and modemutil.

Public Member Functions

 modemserver ()
 
virtual ~modemserver ()
 
bool listen (const char *device, const char *baud, const char *listenscript, const char *acceptscript, const char *disconnectscript)
 
void open (const char *device, const char *baud, const char *listenscript, const char *acceptscript, const char *disconnectscript)
 
bool listen ()
 
filedescriptoraccept ()
 
bool close ()
 
- Public Member Functions inherited from server
 server ()
 
virtual ~server ()
 
void setBacklog (uint32_t backlog)
 
uint32_t getBacklog ()
 
virtual bool bind ()
 
- 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)
 
socketlayergetSocketLayer ()
 
virtual bool supportsBlockingAndNonBlockingModes ()
 
virtual bool setNonBlockingMode (bool usenonblockingmode)
 
virtual bool getNonBlockingMode ()
 
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)
 
virtual int32_t ioCtl (int32_t command, void *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)
 
- Public Member Functions inherited from modemutil
 modemutil ()
 
virtual ~modemutil ()
 
void setDevice (const char *device)
 
void setBaud (const char *baud)
 
const char * getDevice ()
 
const char * getBaud ()
 

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)
 

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()

modemserver::modemserver ( )

Creates an instance of the modemserver class.

◆ ~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 open().

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 open() and closes the device.

Returns true on success and false on failure.

Reimplemented from filedescriptor.

◆ listen() [1/2]

bool modemserver::listen ( )
virtual

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

Returns true on success and false on failure.

Reimplemented from server.

◆ listen() [2/2]

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

Convenience method that calls open() 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.

◆ open()

void modemserver::open ( 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.