44 void close()
override;
48 uint32_t
read(
void *buffer, uint32_t n)
override;
49 void write(
const void *buffer, uint32_t n)
override;
50 void flush()
override;
55 uint32_t
getSize()
const override;
90 if (m_connected == connected)
92 m_connected = connected;
102 if (m_readable == readable)
104 m_readable = readable;
114 if (canWrite == m_writable)
116 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:121
AddressFamily
Supported address families.
Definition IArchNetwork.h:58
@ INet
Definition IArchNetwork.h:60
IDataSocket(const IEventQueue *events)
Definition IDataSocket.h:33
Event queue interface.
Definition IEventQueue.h:29
Socket multiplexer job.
Definition ISocketMultiplexerJob.h:18
Mutual exclusion.
Definition Mutex.h:22
Network address type.
Definition NetworkAddress.h:17
Socket multiplexer.
Definition SocketMultiplexer.h:24
FIFO of bytes.
Definition StreamBuffer.h:19
JobResult
Definition TCPSocket.h:64
@ New
Require a new job.
Definition TCPSocket.h:67
@ Retry
Retry the same job.
Definition TCPSocket.h:66
@ Break
Break the Job chain.
Definition TCPSocket.h:65
Mutex & getMutex()
Definition TCPSocket.h:119
void shutdownInput() override
Shutdown input.
Definition TCPSocket.cpp:177
bool isFatal() const override
Definition TCPSocket.cpp:235
~TCPSocket() override
Definition TCPSocket.cpp:63
void close() override
Close socket.
Definition TCPSocket.cpp:84
void flush() override
Flush the stream.
Definition TCPSocket.cpp:169
void sendEvent(EventTypes)
Definition TCPSocket.cpp:400
TCPSocket & operator=(TCPSocket &&)=delete
void discardWrittenData(int bytesWrote)
Definition TCPSocket.cpp:405
uint32_t getSize() const override
Get bytes available to read.
Definition TCPSocket.cpp:242
virtual ISocketMultiplexerJob * newJob()
Definition TCPSocket.cpp:368
TCPSocket(TCPSocket const &)=delete
ArchSocket getSocket()
Definition TCPSocket.h:70
TCPSocket & operator=(TCPSocket const &)=delete
void connect(const NetworkAddress &) override
Connect socket.
Definition TCPSocket.cpp:248
void bind(const NetworkAddress &) override
Bind socket to address.
Definition TCPSocket.cpp:73
TCPSocket(TCPSocket &&)=delete
virtual JobResult doWrite()
Definition TCPSocket.cpp:340
void setReadable(bool readable)
Definition TCPSocket.h:100
uint32_t read(void *buffer, uint32_t n) override
Read from stream.
Definition TCPSocket.cpp:117
void setWritable(bool canWrite)
Definition TCPSocket.h:112
void setJob(ISocketMultiplexerJob *)
Definition TCPSocket.cpp:358
void write(const void *buffer, uint32_t n) override
Write to stream.
Definition TCPSocket.cpp:138
StreamBuffer m_outputBuffer
Definition TCPSocket.h:128
virtual JobResult doRead()
Definition TCPSocket.cpp:298
StreamBuffer m_inputBuffer
Definition TCPSocket.h:127
void setConnected(bool connected)
Definition TCPSocket.h:88
void shutdownOutput() override
Shutdown output.
Definition TCPSocket.cpp:203
bool isReady() const override
Test if read() will succeed.
Definition TCPSocket.cpp:229
void * getEventTarget() const override
Get event target.
Definition TCPSocket.cpp:112
bool isWritable() const
Definition TCPSocket.h:107
bool isReadable() const
Definition TCPSocket.h:95
IEventQueue * getEvents()
Definition TCPSocket.h:74
bool isConnected() const
Definition TCPSocket.h:83
TCPSocket(IEventQueue *events, SocketMultiplexer *socketMultiplexer, IArchNetwork::AddressFamily family=IArchNetwork::AddressFamily::INet)
Definition TCPSocket.cpp:29
Thread handle.
Definition Thread.h:33
EventTypes
Definition EventTypes.h:13