Vio class

This class provides an I/O layer for files/bufferes/pipes/sockets. More...


Files

file  vio.h
 Class Vio: virtual <SDIO/FILE/BUFF/UNIX/INET> I/O layer.

Classes

struct  sVio
 Contains public data members for Vio class. More...

Typedefs

typedef struct sVio Vio
 Declaration of the Vio class as the Vio structure.

Enumerations

enum  VIOtype {
  VIO_NO_TYPE, VIO_SDIO, VIO_BUFF, VIO_FILE,
  VIO_UNIX, VIO_INET
}
 Parameter for I/O type (sdio,buff,file,unix,inet). More...
enum  VIOfrmt { VIO_NO_FRMT, VIO_XDR, VIO_ASC }
 Parameter for compression type (XDR,ASC). More...
enum  VIOrwkey { VIO_NO_RW, VIO_R, VIO_W }
 Parameter for rw type (R,RW). More...

Functions

void Vio_start (void)
 Start Vio communication layer (init internal variables/buffers).
void Vio_stop (void)
 Shutdown Vio communication layer.
VioVio_ctor (const char *socktype, const char *datafrmt, const char *hostname, const char *filename, const char *rwkey)
 Construct the Vio object.
int Vio_ctor2 (Vio *thee, const char *socktype, const char *datafrmt, const char *hostname, const char *filename, const char *rwkey)
 Work routine that Vio_ctor calls to do most of the construction.
void Vio_dtor (Vio **thee)
 Destruct the Vio object.
void Vio_dtor2 (Vio *thee)
 Work routine that Vio_dtor calls to do most of the destruction.
void Vio_setWhiteChars (Vio *thee, char *whiteChars)
 Set the white character set for I/O stream.
void Vio_setCommChars (Vio *thee, char *commChars)
 Set the comment character set for I/O stream.
int Vio_accept (Vio *thee, int nonblock)
 Accept any waiting connect attempt to our socket on our machine.
void Vio_acceptFree (Vio *thee)
 Free the socket child that was used for the last accept.
int Vio_connect (Vio *thee, int nonblock)
 Connect to some socket on a remote machine (or on our machine).
void Vio_connectFree (Vio *thee)
 Purge any output buffers (for <UNIX/INET>, else a no-op).
int Vio_scanf (Vio *thee, char *parms,...)
 Mimic "scanf" from an arbitrary Vio device.
int Vio_printf (Vio *thee, char *parms,...)
 Mimic "printf" from an arbitrary Vio device.
int Vio_read (Vio *thee, char *buf, int bufsize)
 Read (up to) bufsize characters into buf from input device.
int Vio_write (Vio *thee, char *buf, int bufsize)
 Write bufsize characters from buf to output device.
void Vio_bufTake (Vio *thee, char *buf, int bufsize)
 Set the pointer to the internal buffer.
char * Vio_bufGive (Vio *thee)
 Return the pointer to the internal buffer.
int Vio_bufSize (Vio *thee)
 Return the length to the internal buffer.
VioVio_socketOpen (char *key, const char *iodev, const char *iofmt, const char *iohost, const char *iofile)
 Socket open for read or write.
void Vio_socketClose (Vio **sock)
 Socket close from read or write.

Detailed Description

This class provides an I/O layer for files/bufferes/pipes/sockets.

This class provides an abstraction of I/O to give acess to files, buffers, pipes, UNIX sockets, and INET sockets.


Typedef Documentation

typedef struct sVio Vio

Declaration of the Vio class as the Vio structure.

Author:
Michael Holst


Enumeration Type Documentation

enum VIOfrmt

Parameter for compression type (XDR,ASC).

Author:
Michael Holst
Enumerator:
VIO_NO_FRMT 
VIO_XDR 
VIO_ASC 
00076                      {
00077     VIO_NO_FRMT,
00078     VIO_XDR,
00079     VIO_ASC
00080 } VIOfrmt;

enum VIOrwkey

Parameter for rw type (R,RW).

Author:
Michael Holst
Enumerator:
VIO_NO_RW 
VIO_R 
VIO_W 
00087                       {
00088     VIO_NO_RW,
00089     VIO_R,
00090     VIO_W
00091 } VIOrwkey;

enum VIOtype

Parameter for I/O type (sdio,buff,file,unix,inet).

Author:
Michael Holst
Enumerator:
VIO_NO_TYPE 
VIO_SDIO 
VIO_BUFF 
VIO_FILE 
VIO_UNIX 
VIO_INET 
00062                      {
00063     VIO_NO_TYPE, 
00064     VIO_SDIO,
00065     VIO_BUFF,
00066     VIO_FILE,
00067     VIO_UNIX,
00068     VIO_INET
00069 } VIOtype;


Function Documentation

int Vio_accept ( Vio thee,
int  nonblock 
)

Accept any waiting connect attempt to our socket on our machine.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
1 on success, -1 on failure
Parameters:
thee Pointer to the Vio object
nonblock index for a non-blocking socket Only for <UNIX/INET>; othewise it is ignored. nonblock==0 ==> block until a connect is attempted nonblock==1 ==> DO NOT block at all

void Vio_acceptFree ( Vio thee  ) 

Free the socket child that was used for the last accept.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
None
Parameters:
thee Pointer to the Vio object

char* Vio_bufGive ( Vio thee  ) 

Return the pointer to the internal buffer.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
Poitner to the internal buffer
Parameters:
thee Pointer to the Vio object

int Vio_bufSize ( Vio thee  ) 

Return the length to the internal buffer.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
Length of the internal buffer
Parameters:
thee Pointer to the Vio object

void Vio_bufTake ( Vio thee,
char *  buf,
int  bufsize 
)

Set the pointer to the internal buffer.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
None
Parameters:
thee Pointer to the Vio object
buf buffer containing message
bufsize number of items (of declared type) in buffer

int Vio_connect ( Vio thee,
int  nonblock 
)

Connect to some socket on a remote machine (or on our machine).

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
1 on success, -1 on failure
Parameters:
thee Pointer to the Vio object
nonblock index for a non-blocking socket Only for <UNIX/INET>; othewise it is ignored. nonblock==0 ==> block until a connect is attempted nonblock==1 ==> DO NOT block at all

void Vio_connectFree ( Vio thee  ) 

Purge any output buffers (for <UNIX/INET>, else a no-op).

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
None
Parameters:
thee Pointer to the Vio object

Vio* Vio_ctor ( const char *  socktype,
const char *  datafrmt,
const char *  hostname,
const char *  filename,
const char *  rwkey 
)

Construct the Vio object.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
Pointer to newly constructed Vio object
Parameters:
socktype Pointer to the socket type
datafrmt Pointer to the data format
hostname Pointer to network address of port
filename Pointer to the i/o file name
rwkey Pointer to the read/write options

int Vio_ctor2 ( Vio thee,
const char *  socktype,
const char *  datafrmt,
const char *  hostname,
const char *  filename,
const char *  rwkey 
)

Work routine that Vio_ctor calls to do most of the construction.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
1 on success, 0 on failure
Parameters:
thee Pointer to the Vio object
socktype Pointer to the socket type
datafrmt Pointer to the data format
hostname Pointer to network address of port
filename Pointer to the i/o file name
rwkey Pointer to the read/write options

void Vio_dtor ( Vio **  thee  ) 

Destruct the Vio object.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
None
Parameters:
thee Pointer to the Vio object

void Vio_dtor2 ( Vio thee  ) 

Work routine that Vio_dtor calls to do most of the destruction.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
None
Parameters:
thee Pointer to the Vio object

int Vio_printf ( Vio thee,
char *  parms,
  ... 
)

Mimic "printf" from an arbitrary Vio device.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
Number of tokens printed
Parameters:
thee Pointer to the Vio object
parms Pointer to output parameters

int Vio_read ( Vio thee,
char *  buf,
int  bufsize 
)

Read (up to) bufsize characters into buf from input device.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
Number of bytes read
Parameters:
thee Pointer to the Vio object
buf buffer containing message
bufsize number of items (of declared type) in buffer

int Vio_scanf ( Vio thee,
char *  parms,
  ... 
)

Mimic "scanf" from an arbitrary Vio device.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
Number of tokens read
Parameters:
thee Pointer to the Vio object
parms Pointer to input parameters

void Vio_setCommChars ( Vio thee,
char *  commChars 
)

Set the comment character set for I/O stream.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
None
Parameters:
thee Pointer to the Vio object
commChars comment character set

void Vio_setWhiteChars ( Vio thee,
char *  whiteChars 
)

Set the white character set for I/O stream.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
None
Parameters:
thee Pointer to the Vio object
whiteChars white space character set

void Vio_socketClose ( Vio **  sock  ) 

Socket close from read or write.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
None
Parameters:
sock Socket for reading/writing the external data

Vio* Vio_socketOpen ( char *  key,
const char *  iodev,
const char *  iofmt,
const char *  iohost,
const char *  iofile 
)

Socket open for read or write.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
Socket for reading/writing the external data
Parameters:
key Pointer to the read/write option
iodev Pointer to open device for read/write
iofmt Pointer to i/o data format
iohost Pointer to i/o address of port
iofile Pointer to the i/o file name

void Vio_start ( void   ) 

Start Vio communication layer (init internal variables/buffers).

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
None

void Vio_stop ( void   ) 

Shutdown Vio communication layer.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
None

int Vio_write ( Vio thee,
char *  buf,
int  bufsize 
)

Write bufsize characters from buf to output device.

Author:
Michael Holst
Note:
Class Vio: Non-Inlineable methods (vio.c)
Returns:
Number of bytes writen
Parameters:
thee Pointer to the Vio object
buf buffer containing message
bufsize number of items (of declared type) in buffer


Generated on Mon Aug 9 11:08:04 2010 for MALOC by  doxygen 1.5.6