[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;