GNU CommonC++
|
A more natural C++ "unixstream" class for use by non-threaded applications. More...
#include <unix.h>
Public Member Functions | |
unixstream () | |
Construct an unopened "tcpstream" object. More... | |
unixstream (const char *pathname, int buffer=512) | |
Construct and "open" (connect) the tcp stream to a remote socket. More... | |
unixstream (UnixSocket &unixsock, int buffer=512) | |
Construct and "accept" (connect) the tcp stream through a server. More... | |
void | open (const char *pathname, int buffer=512) |
Open a tcp stream connection. More... | |
void | open (UnixSocket &unixsock, int buffer=512) |
Open a tcp stream connection by accepting a tcp socket. More... | |
void | close (void) |
Close the active tcp stream connection. More... | |
bool | operator! () const |
Test to see if stream is open. More... | |
![]() | |
UnixStream (UnixSocket &server, int size=512, bool throwflag=true, timeout_t timeout=0) | |
Create a Unix domain stream by accepting a connection from a bound Unix domain socket acting as a server. More... | |
UnixStream (const char *pathname, int size=512, bool throwflag=true, timeout_t to=0) | |
Create a Unix domain stream by connecting to a Unix domain socket. More... | |
void | setTimeout (timeout_t to) |
Set the I/O operation timeout for socket I/O operations. More... | |
UnixStream (const UnixStream &source) | |
A copy constructor creates a new stream buffer. More... | |
virtual | ~UnixStream () |
Flush and empty all buffers, and then remove the allocated buffers. More... | |
int | sync (void) |
Flushes the stream input and output buffers, writes pending output. More... | |
bool | isPending (Pending pend, timeout_t timeout=TIMEOUT_INF) |
Get the status of pending stream data. More... | |
int | getBufferSize (void) const |
Return the size of the current stream buffering used. More... | |
![]() | |
virtual | ~Socket () |
The socket base class may be "thrown" as a result of an error, and the "catcher" may then choose to destroy the object. More... | |
Socket & | operator= (const Socket &from) |
Sockets may also be duplicated by the assignment operator. More... | |
virtual IPV4Host | getIPV4Sender (tpport_t *port=NULL) const |
May be used to examine the origin of data waiting in the socket receive queue. More... | |
IPV4Host | getSender (tpport_t *port=NULL) const |
virtual IPV6Host | getIPV6Sender (tpport_t *port=NULL) const |
IPV4Host | getIPV4Peer (tpport_t *port=NULL) const |
Get the host address and port of the socket this socket is connected to. More... | |
IPV4Host | getPeer (tpport_t *port=NULL) const |
IPV6Host | getIPV6Peer (tpport_t *port=NULL) const |
IPV4Host | getIPV4Local (tpport_t *port=NULL) const |
Get the local address and port number this socket is currently bound to. More... | |
IPV4Host | getLocal (tpport_t *port=NULL) const |
IPV6Host | getIPV6Local (tpport_t *port=NULL) const |
IPV4Host | getIPV4NAT (tpport_t *port=NULL) const |
Perform NAT table lookup for this socket. More... | |
IPV4Host | getNAT (tpport_t *port) const |
IPV6Host | getIPV6NAT (tpport_t *port=NULL) const |
void | setCompletion (bool immediate) |
Used to specify blocking mode for the socket. More... | |
Error | setLinger (bool linger) |
Enable lingering sockets on close. More... | |
Error | setKeepAlive (bool enable) |
Set the keep-alive status of this socket and if keep-alive messages will be sent. More... | |
Error | setTypeOfService (Tos service) |
Set packet scheduling on platforms which support ip quality of service conventions. More... | |
bool | isConnected (void) const |
Can test to see if this socket is "connected", and hence whether a "catch" can safely call getPeer(). More... | |
bool | isActive (void) const |
Test to see if the socket is at least operating or if it is mearly initialized. More... | |
bool | operator! () const |
Operator based testing to see if a socket is currently active. More... | |
bool | isBroadcast (void) const |
Return if broadcast has been enabled for the specified socket. More... | |
bool | isRouted (void) const |
Return if socket routing is enabled. More... | |
Error | getErrorNumber (void) const |
Often used by a "catch" to fetch the last error of a thrown socket. More... | |
const char * | getErrorString (void) const |
Often used by a "catch" to fetch the user set error string of a thrown socket, but only if EXTENDED error codes are used. More... | |
long | getSystemError (void) const |
const char * | getSystemErrorString (void) const |
Additional Inherited Members | |
![]() | |
enum | Family { IPV6 = AF_INET6, IPV4 = AF_INET } |
enum | Error { errSuccess = 0, errCreateFailed, errCopyFailed, errInput, errInputInterrupt, errResourceFailure, errOutput, errOutputInterrupt, errNotConnected, errConnectRefused, errConnectRejected, errConnectTimeout, errConnectFailed, errConnectInvalid, errConnectBusy, errConnectNoRoute, errBindingFailed, errBroadcastDenied, errRoutingDenied, errKeepaliveDenied, errServiceDenied, errServiceUnavailable, errMulticastDisabled, errTimeout, errNoDelay, errExtended, errLookupFail, errSearchErr, errInvalidValue } |
enum | Tos { tosLowDelay = 0, tosThroughput, tosReliability, tosMinCost, tosInvalid } |
enum | Pending { pendingInput, pendingOutput, pendingError } |
typedef enum Family | Family |
typedef enum Error | Error |
typedef enum Tos | Tos |
typedef enum Pending | Pending |
![]() | |
static bool | check (Family fam) |
See if a specific protocol family is available in the current runtime environment. More... | |
![]() | |
enum | State { INITIAL, AVAILABLE, BOUND, CONNECTED, CONNECTING, STREAM } |
typedef enum State | State |
![]() | |
UnixStream (bool throwflag=true) | |
The constructor required for "unixstream", a more C++ style version of the TCPStream class. More... | |
void | allocate (int size) |
Used to allocate the buffer space needed for iostream operations. More... | |
void | endStream (void) |
Used to terminate the buffer space and cleanup the socket connection. More... | |
virtual int | underflow (void) |
This streambuf method is used to load the input buffer through the established unix domain socket connection. More... | |
int | uflow (void) |
This streambuf method is used for doing unbuffered reads through the established unix domain socket connection when in interactive mode. More... | |
int | overflow (int ch) |
This streambuf method is used to write the output buffer through the established unix domain connection. More... | |
void | connect (const char *pathname, int size) |
Create a Unix domain stream by connecting to a Unix domain socket. More... | |
std::iostream * | unixstr (void) |
Used in derived classes to refer to the current object via it's iostream. More... | |
![]() | |
Error | error (Error error, const char *err=NULL, long systemError=0) const |
This service is used to throw all socket errors which usually occur during the socket constructor. More... | |
void | error (const char *err) const |
This service is used to throw application defined socket errors where the application specific error code is a string. More... | |
void | setError (bool enable) |
This service is used to turn the error handler on or off for "throwing" exceptions by manipulating the thrown flag. More... | |
void | endSocket (void) |
Used as the default destructor for ending a socket. More... | |
Error | connectError (void) |
Used as a common handler for connection failure processing. More... | |
Error | sendLimit (int limit=2048) |
Set the send limit. More... | |
Error | receiveLimit (int limit=1) |
Set thr receive limit. More... | |
Error | sendTimeout (timeout_t timer) |
Set the send timeout for sending raw network data. More... | |
Error | receiveTimeout (timeout_t timer) |
Receive timeout for receiving raw network data. More... | |
Error | sendBuffer (unsigned size) |
Set the protocol stack network kernel send buffer size associated with the socket. More... | |
Error | receiveBuffer (unsigned size) |
Set the protocol stack network kernel receive buffer size associated with the socket. More... | |
Error | bufferSize (unsigned size) |
Set the total protocol stack network kernel buffer size for both send and receive together. More... | |
Error | setBroadcast (bool enable) |
Set the subnet broadcast flag for the socket. More... | |
Error | setMulticastByFamily (bool enable, Family family=IPV4) |
Setting multicast binds the multicast interface used for the socket to the interface the socket itself has been implicitly bound to. More... | |
Error | setLoopbackByFamily (bool enable, Family family=IPV4) |
Set the multicast loopback flag for the socket. More... | |
Error | setTimeToLiveByFamily (unsigned char ttl, Family fam=IPV4) |
Set the multicast time to live for a multicast socket. More... | |
Error | join (const IPV4Multicast &ia) |
Join a multicast group. More... | |
Error | join (const IPV6Multicast &ia) |
Error | drop (const IPV4Multicast &ia) |
Drop membership from a multicast group. More... | |
Error | drop (const IPV6Multicast &ia) |
Error | setRouting (bool enable) |
Set the socket routing to indicate if outgoing messages should bypass normal routing (set false). More... | |
Error | setNoDelay (bool enable) |
Enable/disable delaying packets (Nagle algorithm) More... | |
Socket (int domain, int type, int protocol=0) | |
An unconnected socket may be created directly on the local machine. More... | |
Socket (SOCKET fd) | |
A socket object may be created from a file descriptor when that descriptor was created either through a socket() or accept() call. More... | |
Socket () | |
Create an inactive socket object for base constructors. More... | |
Socket (const Socket &source) | |
A socket can also be constructed from an already existing Socket object. More... | |
ssize_t | readLine (char *buf, size_t len, timeout_t timeout=0) |
Process a logical input line from a socket descriptor directly. More... | |
virtual ssize_t | readData (void *buf, size_t len, char separator=0, timeout_t t=0) |
Read in a block of len bytes with specific separator. More... | |
virtual ssize_t | writeData (const void *buf, size_t len, timeout_t t=0) |
Write a block of len bytes to socket. More... | |
![]() | |
timeout_t | timeout |
int | bufsize |
char * | gbuf |
char * | pbuf |
![]() | |
struct { | |
bool thrown: 1 | |
bool broadcast: 1 | |
bool route: 1 | |
bool keepalive: 1 | |
bool loopback: 1 | |
bool multicast: 1 | |
bool completion: 1 | |
bool linger: 1 | |
unsigned ttl: 8 | |
} | flags |
SOCKET volatile | so |
the actual socket descriptor, in Windows, unlike posix it cannot be used as an file descriptor that way madness lies – jfc More... | |
State volatile | state |
![]() | |
static Mutex | mutex |
A more natural C++ "unixstream" class for use by non-threaded applications.
This class behaves a lot more like fstream and similar classes.
ost::unixstream::unixstream | ( | ) |
Construct an unopened "tcpstream" object.
ost::unixstream::unixstream | ( | const char * | pathname, |
int | buffer = 512 |
||
) |
Construct and "open" (connect) the tcp stream to a remote socket.
pathname | pathname to socket file |
buffer | size for streaming (optional). |
ost::unixstream::unixstream | ( | UnixSocket & | unixsock, |
int | buffer = 512 |
||
) |
Construct and "accept" (connect) the tcp stream through a server.
unixsock | socket to accept from. |
buffer | size for streaming (optional). |
void ost::unixstream::close | ( | void | ) |
Close the active tcp stream connection.
|
inline |
Open a tcp stream connection.
This will close the currently active connection first.
pathname | pathname to socket file |
buffer | size for streaming (optional) |
References ost::UnixStream::connect().
void ost::unixstream::open | ( | UnixSocket & | unixsock, |
int | buffer = 512 |
||
) |
Open a tcp stream connection by accepting a tcp socket.
unixsock | socket to accept from. |
buffer | size for streaming (optional) |
bool ost::unixstream::operator! | ( | ) | const |
Test to see if stream is open.