#include <socket.h>
Inheritance diagram for ost::Socket:

Public Types | |
| typedef enum Error | Error |
| typedef enum Tos | Tos |
| typedef enum Pending | Pending |
| 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 } |
| enum | Tos { tosLowDelay = 0, tosThroughput, tosReliability, tosMinCost, tosInvalid } |
| enum | Pending { pendingInput, pendingOutput, pendingError } |
Public Methods | |
| 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. | |
| Socket & | operator= (const Socket &from) |
| Sockets may also be duplicated by the assignment operator. | |
| InetHostAddress | getSender (tpport_t *port=NULL) const |
| May be used to examine the origin of data waiting in the socket receive queue. | |
| InetHostAddress | getPeer (tpport_t *port=NULL) const |
| Get the host address and port of the socket this socket is connected to. | |
| InetHostAddress | getLocal (tpport_t *port=NULL) const |
| Get the local address and port number this socket is currently bound to. | |
| void | setCompletion (bool immediate) |
| Used to specify blocking mode for the socket. | |
| Error | setLinger (bool linger) |
| Enable lingering sockets on close. | |
| Error | setKeepAlive (bool enable) |
| Set the keep-alive status of this socket and if keep-alive messages will be sent. | |
| Error | setTypeOfService (Tos service) |
| Set packet scheduling on platforms which support ip quality of service conventions. | |
| bool | isConnected (void) const |
| Can test to see if this socket is "connected", and hence whether a "catch" can safely call getPeer(). | |
| bool | isActive (void) const |
| Test to see if the socket is at least operating or if it is mearly initialized. | |
| bool | operator! () const |
| Operator based testing to see if a socket is currently active. | |
| bool | isBroadcast (void) const |
| Return if broadcast has been enabled for the specified socket. | |
| bool | isRouted (void) const |
| Return if socket routing is enabled. | |
| Error | getErrorNumber (void) const |
| Often used by a "catch" to fetch the last error of a thrown socket. | |
| 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. | |
| virtual bool | isPending (Pending pend, timeout_t timeout=TIMEOUT_INF) |
| Get the status of pending operations. | |
Protected Types | |
| typedef enum State | State |
| enum | State { INITIAL, AVAILABLE, BOUND, CONNECTED, CONNECTING, STREAM } |
Protected Methods | |
| Error | error (Error error, char *errstr=NULL) const |
| This service is used to throw all socket errors which usually occur during the socket constructor. | |
| void | error (char *errstr) const |
| This service is used to throw application defined socket errors where the application specific error code is a string. | |
| void | setError (bool enable) |
| This service is used to turn the error handler on or off for "throwing" exceptions by manipulating the thrown flag. | |
| void | endSocket (void) |
| Used as the default destructor for ending a socket. | |
| Error | connectError (void) |
| Used as a common handler for connection failure processing. | |
| Error | setBroadcast (bool enable) |
| Set the subnet broadcast flag for the socket. | |
| Error | setMulticast (bool enable) |
| Setting multicast binds the multicast interface used for the socket to the interface the socket itself has been implicitly bound to. | |
| Error | setLoopback (bool enable) |
| Set the multicast loopback flag for the socket. | |
| Error | setTimeToLive (unsigned char ttl) |
| Set the multicast time to live for a multicast socket. | |
| Error | join (const InetMcastAddress &ia) |
| Join a multicast group. | |
| Error | drop (const InetMcastAddress &ia) |
| Drop membership from a multicast group. | |
| Error | setRouting (bool enable) |
| Set the socket routing to indicate if outgoing messages should bypass normal routing (set false). | |
| Error | setNoDelay (bool enable) |
| Enable/disable delaying packets (Nagle algorithm). | |
| Socket (int domain, int type, int protocol=0) | |
| An unconnected socket may be created directly on the local machine. | |
| 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. | |
| Socket (const Socket &source) | |
| A socket can also be constructed from an already existing Socket object. | |
| ssize_t | readLine (char *buf, size_t len, timeout_t timeout=0) |
| Process a logical input line from a socket descriptor directly. | |
Protected Attributes | |
| 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 | so |
| the actual socket descriptor, in Windows, unlike posix it *cannot* be used as an file descriptor that way madness lies -- jfc | |
| State | state |
Friends | |
| SOCKET | dupSocket (SOCKET s, Socket::State state) |
A socket is a system resource (or winsock descriptor) that occupies a specific port address (and may be bound to a specific network interface) on the local machine. The socket may also be directly connected to a specific socket on a remote internet host.
This base class is not directly used, but is provided to offer properties common to other Common C++ socket classes, including the socket exception model and the ability to set socket properties such as QoS, "sockopts" properties like Dont-Route and Keep-Alive, etc.
|
|
Reimplemented in ost::URLStream. |
|
|
|
|
|
|
|
|
|
|
|
Reimplemented in ost::URLStream. |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
An unconnected socket may be created directly on the local machine. Sockets can occupy both the internet domain (AF_INET) and UNIX socket domain (AF_UNIX) under unix. The socket type (SOCK_STREAM, SOCK_DGRAM) and protocol may also be specified. If the socket cannot be created, an exception is thrown.
|
|
|
A socket object may be created from a file descriptor when that descriptor was created either through a socket() or accept() call. This constructor is mostly for internal use.
|
|
|
A socket can also be constructed from an already existing Socket object. On POSIX systems, the socket file descriptor is dup()'d. On Win32, DuplicateHandle() is used.
|
|
|
The socket base class may be "thrown" as a result of an error, and the "catcher" may then choose to destroy the object. By assuring the socket base class is a virtual destructor, we can assure the full object is properly terminated. |
|
|
Used as a common handler for connection failure processing.
|
|
|
Drop membership from a multicast group.
Reimplemented in ost::UDPReceive. |
|
|
Used as the default destructor for ending a socket. This will cleanly terminate the socket connection. It is provided for use in derived virtual destructors. |
|
|
This service is used to throw application defined socket errors where the application specific error code is a string.
|
|
||||||||||||
|
This service is used to throw all socket errors which usually occur during the socket constructor.
|
|
|
Often used by a "catch" to fetch the last error of a thrown socket.
|
|
|
Often used by a "catch" to fetch the user set error string of a thrown socket, but only if EXTENDED error codes are used.
|
|
|
Get the local address and port number this socket is currently bound to.
Reimplemented in ost::TCPSocket. |
|
|
Get the host address and port of the socket this socket is connected to. If the socket is currently not in a connected state, then a host address of 0.0.0.0 is returned.
Reimplemented in ost::UDPSocket. |
|
|
May be used to examine the origin of data waiting in the socket receive queue. This can tell a TCP server where pending "connect" requests are coming from, or a UDP socket where it's next packet arrived from.
|
|
|
Test to see if the socket is at least operating or if it is mearly initialized. "initialized" sockets may be the result of failed constructors.
|
|
|
Return if broadcast has been enabled for the specified socket.
|
|
|
Can test to see if this socket is "connected", and hence whether a "catch" can safely call getPeer(). Of course, an unconnected socket will return a 0.0.0.0 address from getPeer() as well.
|
|
||||||||||||
|
Get the status of pending operations. This can be used to examine if input or output is waiting, or if an error has occured on the descriptor.
Reimplemented in ost::TCPStream, and ost::UnixStream. |
|
|
Return if socket routing is enabled.
|
|
|
Join a multicast group.
Reimplemented in ost::UDPReceive. |
|
|
Operator based testing to see if a socket is currently active.
Reimplemented in ost::tcpstream, and ost::unixstream. |
|
|
Sockets may also be duplicated by the assignment operator.
|
|
||||||||||||||||
|
Process a logical input line from a socket descriptor directly.
|
|
|
Set the subnet broadcast flag for the socket. This enables sending to a subnet and may require special image privileges depending on the operating system.
Reimplemented in ost::UDPTransmit. |
|
|
Used to specify blocking mode for the socket. A socket can be made non-blocking by setting setCompletion(false) or set to block on all access with setCompletion(true). I do not believe this form of non-blocking socket I/O is supported in winsock, though it provides an alternate asynchronous set of socket services.
|
|
|
This service is used to turn the error handler on or off for "throwing" exceptions by manipulating the thrown flag.
|
|
|
Set the keep-alive status of this socket and if keep-alive messages will be sent.
|
|
|
Enable lingering sockets on close.
|
|
|
Set the multicast loopback flag for the socket. Loopback enables a socket to hear what it is sending.
|
|
|
Setting multicast binds the multicast interface used for the socket to the interface the socket itself has been implicitly bound to. It is also used as a check flag to make sure multicast is enabled before multicast operations are used.
Reimplemented in ost::UDPTransmit, and ost::UDPReceive. |
|
|
Enable/disable delaying packets (Nagle algorithm).
|
|
|
Set the socket routing to indicate if outgoing messages should bypass normal routing (set false).
Reimplemented in ost::UDPTransmit, and ost::UDPReceive. |
|
|
Set the multicast time to live for a multicast socket.
Reimplemented in ost::UDPTransmit. |
|
|
Set packet scheduling on platforms which support ip quality of service conventions. This effects how packets in the queue are scheduled through the interface.
Reimplemented in ost::UDPTransmit. |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
the actual socket descriptor, in Windows, unlike posix it *cannot* be used as an file descriptor that way madness lies -- jfc
|
|
|
|
|
|
|
|
|
|
1.2.18