Stream-oriented TCP socket. More...
#include <tcpsocket.h>


Public Member Functions | |
| TcpSocket (ObjectBase *parent=nullptr) | |
| Constructs a TcpSocket. | |
| ~TcpSocket () override | |
| Destructor. | |
| Error | open (OpenMode mode) override |
| Opens the socket. | |
| Error | openIpv6 (OpenMode mode) |
| Opens the socket for IPv6 operation. | |
| Error | close () override |
| Closes the socket. | |
| bool | isOpen () const override |
| Returns true if the socket is open. | |
| int64_t | read (void *data, int64_t maxSize) override |
| Reads data from the connected socket. | |
| int64_t | write (const void *data, int64_t maxSize) override |
| Writes data to the connected socket. | |
| int64_t | bytesAvailable () const override |
| Returns the number of bytes available for reading. | |
| Error | setNoDelay (bool enable) |
| Enables or disables TCP_NODELAY (Nagle algorithm). | |
| Error | setKeepAlive (bool enable) |
| Enables or disables SO_KEEPALIVE. | |
Public Member Functions inherited from AbstractSocket | |
| AbstractSocket (SocketType type, ObjectBase *parent=nullptr) | |
| Constructs an AbstractSocket. | |
| virtual | ~AbstractSocket () |
| Destructor. Closes the socket if open. | |
| SocketType | socketType () const |
| Returns the socket type. | |
| SocketState | state () const |
| Returns the current socket state. | |
| Error | bind (const SocketAddress &address) |
| Binds the socket to a local address. | |
| Error | connectToHost (const SocketAddress &address) |
| Initiates a connection to a remote host. | |
| void | disconnectFromHost () |
| Disconnects from the remote host. | |
| SocketAddress | localAddress () const |
| Returns the local address the socket is bound to. | |
| SocketAddress | peerAddress () const |
| Returns the address of the connected peer. | |
| Error | waitForConnected (unsigned int timeoutMs=0) |
| Blocks until the socket is connected or timeout. | |
| int | socketDescriptor () const |
| Returns the raw socket file descriptor. | |
| void | setSocketDescriptor (int fd) |
| Adopts an existing file descriptor as the socket. | |
| Error | setSocketOption (int level, int option, int value) |
| Sets a raw socket option via setsockopt(). | |
| Result< int > | socketOption (int level, int option) const |
| Gets a raw socket option via getsockopt(). | |
| bool | isSequential () const override |
| Returns true — sockets are sequential (non-seekable). | |
| PROMEKI_SIGNAL (connected) | |
| Emitted when a connection is established. | |
| PROMEKI_SIGNAL (disconnected) | |
| Emitted when the socket is disconnected. | |
| PROMEKI_SIGNAL (stateChanged, SocketState) | |
| Emitted when the socket state changes. | |
Public Member Functions inherited from IODevice | |
| IODevice (ObjectBase *parent=nullptr) | |
| Constructs an IODevice. | |
| virtual | ~IODevice () |
| Destructor. | |
| virtual void | flush () |
| Flushes any buffered output data to the underlying device. | |
| virtual bool | waitForReadyRead (unsigned int timeoutMs=0) |
| Waits until data is available for reading or timeout. | |
| virtual bool | waitForBytesWritten (unsigned int timeoutMs=0) |
| Waits until all pending data has been written or timeout. | |
| virtual Error | seek (int64_t pos) |
| Seeks to the given byte offset from the beginning. | |
| virtual int64_t | pos () const |
| Returns the current read/write position. | |
| virtual Result< int64_t > | size () const |
| Returns the total size of the device in bytes. | |
| virtual bool | atEnd () const |
| Returns true if the current position is at the end. | |
| OpenMode | openMode () const |
| Returns the current open mode. | |
| bool | isReadable () const |
| Returns true if the device is readable. | |
| bool | isWritable () const |
| Returns true if the device is writable. | |
| Error | error () const |
| Returns the current error state. | |
| void | clearError () |
| Clears the error state to Ok. | |
| PROMEKI_SIGNAL (readyRead) | |
| Emitted when data is available for reading. | |
| PROMEKI_SIGNAL (bytesWritten, int64_t) | |
| Emitted when bytes have been written. | |
| PROMEKI_SIGNAL (errorOccurred, Error) | |
| Emitted when an error occurs. | |
| PROMEKI_SIGNAL (aboutToClose) | |
| Emitted just before the device is closed. | |
Public Member Functions inherited from ObjectBase | |
| ObjectBase (ObjectBase *p=nullptr) | |
| Default ObjectBase constructor. | |
| virtual | ~ObjectBase () |
| Destructor. Emits aboutToDestroy, detaches from parent, and destroys children. | |
| ObjectBase * | parent () const |
| Returns the parent object, if one. nullptr if none. | |
| void | setParent (ObjectBase *p) |
| Sets the parent of this object. If the object already has a parent, it will be removed as a child from the old parent and added as a child to the new one. | |
| const ObjectBaseList & | childList () const |
| Returns a list of children of this object. | |
| template<typename... Args> | |
| int | registerSlot (Slot< Args... > *slot) |
| Registers a slot with this object and assigns it an ID. | |
| EventLoop * | eventLoop () const |
| Returns the EventLoop this object is affiliated with. | |
| void | moveToThread (EventLoop *loop) |
| Changes the EventLoop affinity of this object. | |
| int | startTimer (unsigned int intervalMs, bool singleShot=false) |
| Starts a timer on this object's EventLoop. | |
| void | stopTimer (int timerId) |
| Stops a timer previously started with startTimer(). | |
| template<typename... Args> | |
| PROMEKI_NAMESPACE_BEGIN void | connect (Signal< Args... > *signal, Slot< Args... > *slot) |
Additional Inherited Members | |
Public Types inherited from AbstractSocket | |
| enum | SocketType { TcpSocketType , UdpSocketType , RawSocketType } |
| The type of socket. More... | |
| enum | SocketState { Unconnected , Connecting , Connected , Bound , Closing , Listening } |
| The current state of the socket. More... | |
Public Types inherited from IODevice | |
| enum | OpenMode { NotOpen = 0x00 , ReadOnly = 0x01 , WriteOnly = 0x02 , ReadWrite = ReadOnly | WriteOnly , Append = 0x04 | WriteOnly } |
| Mode flags controlling how a device is opened. More... | |
Public Types inherited from ObjectBase | |
| using | SlotVariantFunc = std::function< void(const VariantList &)> |
| Function type for invoking a slot with a list of Variants. | |
Static Public Member Functions inherited from ObjectBase | |
| static const MetaInfo & | metaInfo () |
| Returns the MetaInfo for the ObjectBase class. | |
| template<typename... Args> | |
| static void | connect (Signal< Args... > *signal, Slot< Args... > *slot) |
| connects a signal and slot together. This function assumes both the signal and slot exist in a ObjectBase or derived object | |
Public Attributes inherited from ObjectBase | |
| Signal< ObjectBase * > | aboutToDestroySignal = Signal< ObjectBase * >(this, aboutToDestroySignalName) |
Static Public Attributes inherited from ObjectBase | |
| static constexpr const char * | aboutToDestroySignalName = PROMEKI_STRINGIFY( aboutToDestroy ) "(" PROMEKI_STRINGIFY_ARGS( ObjectBase * ) ")" |
| static SignalMeta | aboutToDestroySignalMeta = SignalMeta(metaInfo(), aboutToDestroySignalName) |
Protected Member Functions inherited from AbstractSocket | |
| Error | createSocket (int domain, int type, int protocol=0) |
| Creates the underlying socket descriptor. | |
| void | closeSocket () |
| Closes the socket descriptor. | |
| Error | setNonBlocking (bool enable) |
| Sets the socket to non-blocking mode. | |
| void | updateLocalAddress () |
| Updates the local address from the socket descriptor. | |
| void | setState (SocketState state) |
| Sets the socket state and emits stateChanged. | |
Protected Member Functions inherited from IODevice | |
| void | setOpenMode (OpenMode mode) |
| Sets the open mode. | |
| void | setError (const Error &err) |
| Sets the error state and emits errorOccurred. | |
Protected Member Functions inherited from ObjectBase | |
| ObjectBase * | signalSender () |
| Returns the ObjectBase that emitted the signal currently being handled. | |
| virtual void | event (Event *e) |
| Called by EventLoop to deliver events to this object. | |
| virtual void | timerEvent (TimerEvent *e) |
| Called when a timer fires for this object. | |
Protected Attributes inherited from AbstractSocket | |
| int | _fd = -1 |
| Socket file descriptor. | |
| SocketState | _state = Unconnected |
| Current socket state. | |
| SocketType | _type |
| Socket type. | |
| SocketAddress | _localAddress |
| Local bound address. | |
| SocketAddress | _peerAddress |
| Connected peer address. | |
Stream-oriented TCP socket.
TcpSocket provides reliable, ordered, connection-oriented communication over TCP. Uses the IODevice read()/write() interface for data transfer after a connection is established.
This class must only be used from the thread that created it (or moved to via moveToThread()).
| TcpSocket::TcpSocket | ( | ObjectBase * | parent = nullptr | ) |
Constructs a TcpSocket.
| parent | The parent object, or nullptr. |
|
overridevirtual |
Returns the number of bytes available for reading.
Reimplemented from IODevice.
|
overridevirtual |
|
inlineoverridevirtual |
Returns true if the socket is open.
Implements IODevice.
Opens the socket.
Creates an AF_INET SOCK_STREAM socket. Use openIpv6() if IPv6 is needed.
| mode | The open mode (typically ReadWrite). |
Implements IODevice.
Opens the socket for IPv6 operation.
Creates an AF_INET6 SOCK_STREAM socket. By default, IPV6_V6ONLY is disabled so IPv4-mapped addresses work.
| mode | The open mode. |
Enables or disables SO_KEEPALIVE.
| enable | True to enable keepalive probes. |
Enables or disables TCP_NODELAY (Nagle algorithm).
| enable | True to disable Nagle (low latency), false to enable. |
Writes data to the connected socket.
| data | Data to send. |
| maxSize | Bytes to send. |
Implements IODevice.