diff options
Diffstat (limited to 'lib/server')
-rw-r--r-- | lib/server/SocketStream.cpp | 17 | ||||
-rw-r--r-- | lib/server/SocketStream.h | 9 | ||||
-rw-r--r-- | lib/server/SocketStreamTLS.cpp | 4 |
3 files changed, 27 insertions, 3 deletions
diff --git a/lib/server/SocketStream.cpp b/lib/server/SocketStream.cpp index 2c704b8b..aa3825bf 100644 --- a/lib/server/SocketStream.cpp +++ b/lib/server/SocketStream.cpp @@ -38,7 +38,9 @@ SocketStream::SocketStream() : mSocketHandle(-1), mReadClosed(false), - mWriteClosed(false) + mWriteClosed(false), + mBytesRead(0), + mBytesWritten(0) { } @@ -53,7 +55,9 @@ SocketStream::SocketStream() SocketStream::SocketStream(int socket) : mSocketHandle(socket), mReadClosed(false), - mWriteClosed(false) + mWriteClosed(false), + mBytesRead(0), + mBytesWritten(0) { if(socket < 0) { @@ -72,7 +76,9 @@ SocketStream::SocketStream(int socket) SocketStream::SocketStream(const SocketStream &rToCopy) : mSocketHandle(::dup(rToCopy.mSocketHandle)), mReadClosed(rToCopy.mReadClosed), - mWriteClosed(rToCopy.mWriteClosed) + mWriteClosed(rToCopy.mWriteClosed), + mBytesRead(rToCopy.mBytesRead), + mBytesWritten(rToCopy.mBytesWritten) { if(rToCopy.mSocketHandle < 0) @@ -114,6 +120,7 @@ void SocketStream::Attach(int socket) if(mSocketHandle != -1) {THROW_EXCEPTION(ServerException, SocketAlreadyOpen)} mSocketHandle = socket; + ResetCounters(); } @@ -154,6 +161,7 @@ void SocketStream::Open(int Type, const char *Name, int Port) mSocketHandle = -1; THROW_EXCEPTION(ConnectionException, Conn_SocketConnectError) } + ResetCounters(); } // -------------------------------------------------------------------------- @@ -225,6 +233,7 @@ int SocketStream::Read(void *pBuffer, int NBytes, int Timeout) mReadClosed = true; } + mBytesRead += r; return r; } @@ -266,6 +275,8 @@ void SocketStream::Write(const void *pBuffer, int NBytes) bytesLeft -= sent; // Move buffer pointer buffer += sent; + + mBytesWritten += sent; // Need to wait until it can send again? if(bytesLeft > 0) diff --git a/lib/server/SocketStream.h b/lib/server/SocketStream.h index 5caaacfd..7f1cb741 100644 --- a/lib/server/SocketStream.h +++ b/lib/server/SocketStream.h @@ -56,6 +56,15 @@ private: tOSSocketHandle mSocketHandle; bool mReadClosed; bool mWriteClosed; + +protected: + off_t mBytesRead; + off_t mBytesWritten; + +public: + off_t GetBytesRead() const {return mBytesRead;} + off_t GetBytesWritten() const {return mBytesWritten;} + void ResetCounters() {mBytesRead = mBytesWritten = 0;} }; #endif // SOCKETSTREAM__H diff --git a/lib/server/SocketStreamTLS.cpp b/lib/server/SocketStreamTLS.cpp index 39e0ea6c..94aa3868 100644 --- a/lib/server/SocketStreamTLS.cpp +++ b/lib/server/SocketStreamTLS.cpp @@ -40,6 +40,7 @@ SocketStreamTLS::SocketStreamTLS() : mpSSL(0), mpBIO(0) { + ResetCounters(); } // -------------------------------------------------------------------------- @@ -101,6 +102,7 @@ void SocketStreamTLS::Open(const TLSContext &rContext, int Type, const char *Nam { SocketStream::Open(Type, Name, Port); Handshake(rContext); + ResetCounters(); } @@ -295,6 +297,7 @@ int SocketStreamTLS::Read(void *pBuffer, int NBytes, int Timeout) { case SSL_ERROR_NONE: // No error, return number of bytes read + mBytesRead += r; return r; break; @@ -358,6 +361,7 @@ void SocketStreamTLS::Write(const void *pBuffer, int NBytes) { case SSL_ERROR_NONE: // No error, data sent, return success + mBytesWritten += r; return; break; |