refactor: TCPSocket, new protected methods to access m_readable, m_writable and m_connected, use them in place of direct access and make the variables private
TCPSocket, remove duplicate private and protected sections in header
This commit is contained in:
@ -88,7 +88,7 @@ ISocketMultiplexerJob *SecureSocket::newJob()
|
||||
{
|
||||
// after TCP connection is established, SecureSocket will pick up
|
||||
// connected event and do secureConnect
|
||||
if (m_connected && !m_secureReady) {
|
||||
if (isConnected() && !m_secureReady) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@ -155,11 +155,11 @@ TCPSocket::JobResult SecureSocket::doRead()
|
||||
// has therefore shutdown but don't flush our buffer
|
||||
// since there's still data to be read.
|
||||
sendEvent(EventTypes::StreamInputShutdown);
|
||||
if (!m_writable && m_inputBuffer.getSize() == 0) {
|
||||
if (!isWritable() && m_inputBuffer.getSize() == 0) {
|
||||
sendEvent(EventTypes::SocketDisconnected);
|
||||
m_connected = false;
|
||||
setConnected(false);
|
||||
}
|
||||
m_readable = false;
|
||||
setReadable(false);
|
||||
return New;
|
||||
}
|
||||
|
||||
@ -565,7 +565,7 @@ void SecureSocket::checkResult(int status, int &retry)
|
||||
// Need to make sure the socket is known to be writable so the impending
|
||||
// select action actually triggers on a write. This isn't necessary for
|
||||
// m_readable because the socket logic is always readable
|
||||
m_writable = true;
|
||||
setWritable(true);
|
||||
retry++;
|
||||
LOG((CLOG_DEBUG2 "want to write, error=%d, attempt=%d", errorCode, retry));
|
||||
break;
|
||||
|
||||
@ -79,15 +79,42 @@ protected:
|
||||
|
||||
void setJob(ISocketMultiplexerJob *);
|
||||
|
||||
bool isConnected() const
|
||||
{
|
||||
return m_connected;
|
||||
}
|
||||
|
||||
void setConnected(bool connected)
|
||||
{
|
||||
if (m_connected == connected)
|
||||
return;
|
||||
m_connected = connected;
|
||||
}
|
||||
|
||||
bool isReadable() const
|
||||
{
|
||||
return m_readable;
|
||||
}
|
||||
|
||||
void setReadable(bool readable)
|
||||
{
|
||||
if (m_readable == readable)
|
||||
return;
|
||||
m_readable = readable;
|
||||
}
|
||||
|
||||
bool isWritable() const
|
||||
{
|
||||
return m_writable;
|
||||
}
|
||||
|
||||
void setWritable(bool canWrite)
|
||||
{
|
||||
if (canWrite == m_writable)
|
||||
return;
|
||||
m_writable = canWrite;
|
||||
}
|
||||
|
||||
Mutex &getMutex()
|
||||
{
|
||||
return m_mutex;
|
||||
@ -96,6 +123,10 @@ protected:
|
||||
void sendEvent(EventTypes);
|
||||
void discardWrittenData(int bytesWrote);
|
||||
|
||||
IEventQueue *m_events;
|
||||
StreamBuffer m_inputBuffer;
|
||||
StreamBuffer m_outputBuffer;
|
||||
|
||||
private:
|
||||
void init();
|
||||
|
||||
@ -108,15 +139,9 @@ private:
|
||||
ISocketMultiplexerJob *serviceConnecting(ISocketMultiplexerJob *, bool, bool, bool);
|
||||
ISocketMultiplexerJob *serviceConnected(ISocketMultiplexerJob *, bool, bool, bool);
|
||||
|
||||
protected:
|
||||
bool m_readable;
|
||||
bool m_writable;
|
||||
bool m_connected;
|
||||
IEventQueue *m_events;
|
||||
StreamBuffer m_inputBuffer;
|
||||
StreamBuffer m_outputBuffer;
|
||||
|
||||
private:
|
||||
Mutex m_mutex;
|
||||
ArchSocket m_socket;
|
||||
CondVar<bool> m_flushed;
|
||||
|
||||
Reference in New Issue
Block a user