mirror of https://github.com/Icinga/icinga2.git
Clean up socket code.
This commit is contained in:
parent
fb0a100e24
commit
917f288a95
|
@ -210,5 +210,5 @@ bool BufferedStream::IsEof(void) const
|
|||
{
|
||||
boost::mutex::scoped_lock lock(m_Mutex);
|
||||
|
||||
return m_Eof;
|
||||
}
|
||||
return m_InnerStream->IsEof() && m_RecvQ->GetAvailableBytes() == 0;
|
||||
}
|
||||
|
|
|
@ -43,7 +43,15 @@ void NetworkStream::Close(void)
|
|||
*/
|
||||
size_t NetworkStream::Read(void *buffer, size_t count)
|
||||
{
|
||||
size_t rc = m_Socket->Read(buffer, count);
|
||||
size_t rc;
|
||||
|
||||
try {
|
||||
rc = m_Socket->Read(buffer, count);
|
||||
} catch (...) {
|
||||
m_Eof = true;
|
||||
|
||||
throw;
|
||||
}
|
||||
|
||||
if (rc == 0)
|
||||
m_Eof = true;
|
||||
|
@ -60,7 +68,16 @@ size_t NetworkStream::Read(void *buffer, size_t count)
|
|||
*/
|
||||
void NetworkStream::Write(const void *buffer, size_t count)
|
||||
{
|
||||
size_t rc = m_Socket->Write(buffer, count);
|
||||
size_t rc;
|
||||
|
||||
try {
|
||||
rc = m_Socket->Write(buffer, count);
|
||||
} catch (...) {
|
||||
m_Eof = true;
|
||||
|
||||
throw;
|
||||
}
|
||||
|
||||
if (rc < count)
|
||||
BOOST_THROW_EXCEPTION(std::runtime_error("Short write for socket."));
|
||||
}
|
||||
|
|
|
@ -62,8 +62,8 @@ Socket::~Socket(void)
|
|||
void Socket::SetFD(SOCKET fd)
|
||||
{
|
||||
if (fd != INVALID_SOCKET) {
|
||||
/* mark the socket as close-on-exec */
|
||||
#ifndef _WIN32
|
||||
/* mark the socket as close-on-exec */
|
||||
Utility::SetCloExec(fd);
|
||||
#endif /* _WIN32 */
|
||||
}
|
||||
|
|
|
@ -58,8 +58,6 @@ protected:
|
|||
void SetFD(SOCKET fd);
|
||||
SOCKET GetFD(void) const;
|
||||
|
||||
void SetConnected(bool connected);
|
||||
|
||||
int GetError(void) const;
|
||||
|
||||
mutable boost::mutex m_SocketMutex;
|
||||
|
|
Loading…
Reference in New Issue