summaryrefslogtreecommitdiff
path: root/lib/server
diff options
context:
space:
mode:
Diffstat (limited to 'lib/server')
-rw-r--r--lib/server/SocketStream.cpp17
-rw-r--r--lib/server/SocketStream.h9
-rw-r--r--lib/server/SocketStreamTLS.cpp4
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;