summaryrefslogtreecommitdiff
path: root/develop/src/tools/socket.h
diff options
context:
space:
mode:
Diffstat (limited to 'develop/src/tools/socket.h')
-rw-r--r--develop/src/tools/socket.h108
1 files changed, 0 insertions, 108 deletions
diff --git a/develop/src/tools/socket.h b/develop/src/tools/socket.h
deleted file mode 100644
index d1a7d62..0000000
--- a/develop/src/tools/socket.h
+++ /dev/null
@@ -1,108 +0,0 @@
-#ifndef TOOLBOX_SOCKET_H
-#define TOOLBOX_SOCKET_H
-
-#include "tools/tools.h"
-#include "tools/source.h"
-
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <string>
-
-/* cTBSocket provides a cTBSource-derived interface for input and output on
- TCP/IPv4-sockets. */
-
-class cTBSocket: public cTBSource {
-private:
- struct sockaddr_in m_LocalAddr;
- struct sockaddr_in m_RemoteAddr;
-
- int m_Type;
-
-public:
- cTBSocket(int Type = SOCK_STREAM);
- virtual ~cTBSocket();
-
- /* See cTBSource::SysRead()
- Reimplemented for TCP/IPv4 sockets. */
- virtual ssize_t SysRead(void *Buffer, size_t Length) const;
-
- /* See cTBSource::SysWrite()
- Reimplemented for TCP/IPv4 sockets. */
- virtual ssize_t SysWrite(const void *Buffer, size_t Length) const;
-
- /* Connect() tries to connect an available local socket to the port given
- by Port of the target host given by Host in numbers-and-dots notation
- (i.e. "212.43.45.21"). Returns true if the connection attempt was
- successful and false otherwise, setting errno appropriately. */
- virtual bool Connect(const std::string &Host, uint Port);
-
- /* Shutdown() shuts down one or both ends of a socket. If called with How
- set to SHUT_RD, further reads on this socket will be denied. If called
- with SHUT_WR, all writes are denied. Called with SHUT_RDWR, all firther
- action on this socket will be denied. Returns true on success and false
- otherwise, setting errno appropriately. */
- virtual bool Shutdown(int How);
-
- /* Close() closes the associated socket and releases all structures.
- Returns true on success and false otherwise, setting errno
- appropriately. The object is in the closed state afterwards, regardless
- of any errors. */
- virtual bool Close(void);
-
- /* Listen() listens on the local port Port for incoming connections. The
- BackLog parameter defines the maximum length the queue of pending
- connections may grow to. Returns true if the object is listening on
- the specified port and false otherwise, setting errno appropriately. */
- virtual bool Listen(const std::string &Ip, uint Port, int BackLog);
-
- /* Accept() returns a newly created cTBSocket, which is connected to the
- first connection request on the queue of pending connections of a
- listening socket. If no connection request was pending, or if any other
- error occured, the resulting cTBSocket is closed. */
- virtual cTBSocket Accept(void) const;
-
- /* Accept() extracts the first connection request on the queue of pending
- connections of the listening socket Listener and connects it to this
- object. Returns true on success and false otherwise, setting errno to
- an appropriate value. */
- virtual bool Accept(const cTBSocket &Listener);
-
- /* LocalPort() returns the port number this socket is connected to locally.
- The result is undefined for a non-open socket. */
- int LocalPort(void) const { return ntohs(m_LocalAddr.sin_port); }
-
- /* RemotePort() returns the port number this socket is connected to on the
- remote side. The result is undefined for a non-open socket. */
- int RemotePort(void) const { return ntohs(m_RemoteAddr.sin_port); }
-
- /* LocalIp() returns the internet address in numbers-and-dots notation of
- the interface this socket is connected to locally. This can be
- "0.0.0.0" for a listening socket listening to all interfaces. If the
- socket is in its closed state, the result is undefined. */
- std::string LocalIp(void) const { return inet_ntoa(m_LocalAddr.sin_addr); }
-
- /* RemoteIp() returns the internet address in numbers-and-dots notation of
- the interface this socket is connected to on the remote side. If the
- socket is in its closed state, the result is undefined. */
- std::string RemoteIp(void) const { return inet_ntoa(m_RemoteAddr.sin_addr); }
-
- in_addr_t LocalIpAddr(void) const { return m_LocalAddr.sin_addr.s_addr; }
- in_addr_t RemoteIpAddr(void) const { return m_RemoteAddr.sin_addr.s_addr; }
-
- int Type(void) const { return m_Type; }
-};
-
-inline ssize_t cTBSocket::SysRead(void *Buffer, size_t Length) const {
- if (m_Type == SOCK_DGRAM) {
- socklen_t len = sizeof(m_RemoteAddr);
- return ::recvfrom(*this, Buffer, Length, 0, (sockaddr*)&m_RemoteAddr, &len);
- } else
- return ::recv(*this, Buffer, Length, 0);
-}
-
-inline ssize_t cTBSocket::SysWrite(const void *Buffer, size_t Length) const {
- return ::send(*this, Buffer, Length, 0);
-}
-
-#endif // TOOLBOX_SOCKET_H