[Box Backup-dev] COMMIT r457 - in box/trunk: bin/bbstored lib/server
boxbackup-dev@fluffy.co.uk
boxbackup-dev@fluffy.co.uk
Mon, 13 Feb 2006 13:35:52 +0000 (GMT)
Author: ben
Date: 2006-02-13 13:35:51 +0000 (Mon, 13 Feb 2006)
New Revision: 457
Modified:
box/trunk/bin/bbstored/BackupStoreDaemon.cpp
box/trunk/bin/bbstored/BackupStoreDaemon.h
box/trunk/lib/server/SocketStream.cpp
box/trunk/lib/server/SocketStream.h
box/trunk/lib/server/SocketStreamTLS.cpp
Log:
Bandwidth usage logging patch from Pascal Lalonde <plalonde@overnet.qc.ca>, with minor change to exception handling
Modified: box/trunk/bin/bbstored/BackupStoreDaemon.cpp
===================================================================
--- box/trunk/bin/bbstored/BackupStoreDaemon.cpp 2006-02-13 13:30:21 UTC (rev 456)
+++ box/trunk/bin/bbstored/BackupStoreDaemon.cpp 2006-02-13 13:35:51 UTC (rev 457)
@@ -278,7 +278,25 @@
BackupProtocolServer server(rStream);
server.SetLogToSysLog(mExtendedLogging);
server.SetTimeout(BACKUP_STORE_TIMEOUT);
- server.DoServer(context);
+ try
+ {
+ server.DoServer(context);
+ }
+ catch(...)
+ {
+ LogConnectionStats(clientCommonName.c_str(), rStream);
+ throw;
+ }
+ LogConnectionStats(clientCommonName.c_str(), rStream);
context.CleanUp();
}
+void BackupStoreDaemon::LogConnectionStats(const char *commonName,
+ const SocketStreamTLS &s)
+{
+ // Log the amount of data transferred
+ ::syslog(LOG_INFO, "Connection statistics for %s: "
+ "IN=%lld OUT=%lld TOTAL=%lld\n", commonName,
+ s.GetBytesRead(), s.GetBytesWritten(),
+ s.GetBytesRead() + s.GetBytesWritten());
+}
Modified: box/trunk/bin/bbstored/BackupStoreDaemon.h
===================================================================
--- box/trunk/bin/bbstored/BackupStoreDaemon.h 2006-02-13 13:30:21 UTC (rev 456)
+++ box/trunk/bin/bbstored/BackupStoreDaemon.h 2006-02-13 13:35:51 UTC (rev 457)
@@ -61,6 +61,8 @@
void HousekeepingProcess();
bool CheckForInterProcessMsg(int AccountNum = 0, int MaximumWaitTime = 0);
+ void LogConnectionStats(const char *commonName, const SocketStreamTLS &s);
+
private:
BackupStoreAccountDatabase *mpAccountDatabase;
BackupStoreAccounts *mpAccounts;
Modified: box/trunk/lib/server/SocketStream.cpp
===================================================================
--- box/trunk/lib/server/SocketStream.cpp 2006-02-13 13:30:21 UTC (rev 456)
+++ box/trunk/lib/server/SocketStream.cpp 2006-02-13 13:35:51 UTC (rev 457)
@@ -38,7 +38,9 @@
SocketStream::SocketStream()
: mSocketHandle(-1),
mReadClosed(false),
- mWriteClosed(false)
+ mWriteClosed(false),
+ mBytesRead(0),
+ mBytesWritten(0)
{
}
@@ -53,7 +55,9 @@
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(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 @@
if(mSocketHandle != -1) {THROW_EXCEPTION(ServerException, SocketAlreadyOpen)}
mSocketHandle = socket;
+ ResetCounters();
}
@@ -154,6 +161,7 @@
mSocketHandle = -1;
THROW_EXCEPTION(ConnectionException, Conn_SocketConnectError)
}
+ ResetCounters();
}
// --------------------------------------------------------------------------
@@ -225,6 +233,7 @@
mReadClosed = true;
}
+ mBytesRead += r;
return r;
}
@@ -266,6 +275,8 @@
bytesLeft -= sent;
// Move buffer pointer
buffer += sent;
+
+ mBytesWritten += sent;
// Need to wait until it can send again?
if(bytesLeft > 0)
Modified: box/trunk/lib/server/SocketStream.h
===================================================================
--- box/trunk/lib/server/SocketStream.h 2006-02-13 13:30:21 UTC (rev 456)
+++ box/trunk/lib/server/SocketStream.h 2006-02-13 13:35:51 UTC (rev 457)
@@ -56,6 +56,15 @@
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
Modified: box/trunk/lib/server/SocketStreamTLS.cpp
===================================================================
--- box/trunk/lib/server/SocketStreamTLS.cpp 2006-02-13 13:30:21 UTC (rev 456)
+++ box/trunk/lib/server/SocketStreamTLS.cpp 2006-02-13 13:35:51 UTC (rev 457)
@@ -40,6 +40,7 @@
SocketStreamTLS::SocketStreamTLS()
: mpSSL(0), mpBIO(0)
{
+ ResetCounters();
}
// --------------------------------------------------------------------------
@@ -101,6 +102,7 @@
{
SocketStream::Open(Type, Name, Port);
Handshake(rContext);
+ ResetCounters();
}
@@ -295,6 +297,7 @@
{
case SSL_ERROR_NONE:
// No error, return number of bytes read
+ mBytesRead += r;
return r;
break;
@@ -358,6 +361,7 @@
{
case SSL_ERROR_NONE:
// No error, data sent, return success
+ mBytesWritten += r;
return;
break;