43 void close()
override;
47 uint32_t
read(
void *buffer, uint32_t n)
override;
48 void write(
const void *buffer, uint32_t n)
override;
49 void flush()
override;
54 uint32_t
getSize()
const override;
89 if (m_connected == connected)
91 m_connected = connected;
101 if (m_readable == readable)
103 m_readable = readable;
113 if (canWrite == m_writable)
115 m_writable = canWrite;
133 void sendConnectionFailedEvent(
const char *);
135 void onInputShutdown();
136 void onOutputShutdown();
137 void onDisconnected();
ArchSocketImpl * ArchSocket
Opaque socket type. An opaque type representing a socket.
Definition IArchNetwork.h:30
Condition variable.
Definition CondVar.h:122
AddressFamily
Supported address families.
Definition IArchNetwork.h:57
@ INet
Definition IArchNetwork.h:59
IDataSocket(const IEventQueue *events)
Definition IDataSocket.h:32
Event queue interface.
Definition IEventQueue.h:32
Socket multiplexer job.
Definition ISocketMultiplexerJob.h:18
Mutual exclusion.
Definition Mutex.h:22
Network address type.
Definition NetworkAddress.h:18
Socket multiplexer.
Definition SocketMultiplexer.h:26
FIFO of bytes.
Definition StreamBuffer.h:20
JobResult
Definition TCPSocket.h:63
@ New
Require a new job.
Definition TCPSocket.h:66
@ Retry
Retry the same job.
Definition TCPSocket.h:65
@ Break
Break the Job chain.
Definition TCPSocket.h:64
Mutex & getMutex()
Definition TCPSocket.h:118
void shutdownInput() override
Shutdown input.
Definition TCPSocket.cpp:178
bool isFatal() const override
Definition TCPSocket.cpp:236
~TCPSocket() override
Definition TCPSocket.cpp:64
void close() override
Close socket.
Definition TCPSocket.cpp:85
IEventQueue * m_events
Definition TCPSocket.h:126
void flush() override
Flush the stream.
Definition TCPSocket.cpp:170
void sendEvent(EventTypes)
Definition TCPSocket.cpp:401
TCPSocket & operator=(TCPSocket &&)=delete
void discardWrittenData(int bytesWrote)
Definition TCPSocket.cpp:406
uint32_t getSize() const override
Get bytes available to read.
Definition TCPSocket.cpp:243
virtual ISocketMultiplexerJob * newJob()
Definition TCPSocket.cpp:369
TCPSocket(TCPSocket const &)=delete
ArchSocket getSocket()
Definition TCPSocket.h:69
TCPSocket & operator=(TCPSocket const &)=delete
void connect(const NetworkAddress &) override
Connect socket.
Definition TCPSocket.cpp:249
void bind(const NetworkAddress &) override
Bind socket to address.
Definition TCPSocket.cpp:74
TCPSocket(TCPSocket &&)=delete
virtual JobResult doWrite()
Definition TCPSocket.cpp:341
void setReadable(bool readable)
Definition TCPSocket.h:99
uint32_t read(void *buffer, uint32_t n) override
Read from stream.
Definition TCPSocket.cpp:118
void setWritable(bool canWrite)
Definition TCPSocket.h:111
void setJob(ISocketMultiplexerJob *)
Definition TCPSocket.cpp:359
void write(const void *buffer, uint32_t n) override
Write to stream.
Definition TCPSocket.cpp:139
StreamBuffer m_outputBuffer
Definition TCPSocket.h:128
virtual JobResult doRead()
Definition TCPSocket.cpp:299
StreamBuffer m_inputBuffer
Definition TCPSocket.h:127
void setConnected(bool connected)
Definition TCPSocket.h:87
void shutdownOutput() override
Shutdown output.
Definition TCPSocket.cpp:204
bool isReady() const override
Test if read() will succeed.
Definition TCPSocket.cpp:230
void * getEventTarget() const override
Get event target.
Definition TCPSocket.cpp:113
bool isWritable() const
Definition TCPSocket.h:106
bool isReadable() const
Definition TCPSocket.h:94
IEventQueue * getEvents()
Definition TCPSocket.h:73
bool isConnected() const
Definition TCPSocket.h:82
TCPSocket(IEventQueue *events, SocketMultiplexer *socketMultiplexer, IArchNetwork::AddressFamily family=IArchNetwork::AddressFamily::INet)
Definition TCPSocket.cpp:30
Thread handle.
Definition Thread.h:33
EventTypes
Definition EventTypes.h:13