Browse Source

2010-03-02 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Avoid costly BtMessage::toString() if info level log is not
	required.
	* src/DefaultBtInteractive.cc
	* src/Logger.h
	* src/SimpleBtMessage.cc
Tatsuhiro Tsujikawa 15 years ago
parent
commit
94e306cec4
4 changed files with 28 additions and 6 deletions
  1. 8 0
      ChangeLog
  2. 5 3
      src/DefaultBtInteractive.cc
  3. 11 1
      src/Logger.h
  4. 4 2
      src/SimpleBtMessage.cc

+ 8 - 0
ChangeLog

@@ -1,3 +1,11 @@
+2010-03-02  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Avoid costly BtMessage::toString() if info level log is not
+	required.
+	* src/DefaultBtInteractive.cc
+	* src/Logger.h
+	* src/SimpleBtMessage.cc
+
 2010-03-02  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Reserved vector elements based on profiler results.

+ 5 - 3
src/DefaultBtInteractive.cc

@@ -265,9 +265,11 @@ size_t DefaultBtInteractive::receiveMessages() {
       break;
     }
     ++msgcount;
-    logger->info(MSG_RECEIVE_PEER_MESSAGE, cuid,
-                 peer->ipaddr.c_str(), peer->port,
-                 message->toString().c_str());
+    if(logger->info()) {
+      logger->info(MSG_RECEIVE_PEER_MESSAGE, cuid,
+                   peer->ipaddr.c_str(), peer->port,
+                   message->toString().c_str());
+    }
     message->doReceivedAction();
 
     switch(message->getId()) {

+ 11 - 1
src/Logger.h

@@ -71,6 +71,11 @@ private:
   std::ofstream _file;
 
   int _stdoutField;
+  
+  inline bool levelEnabled(LEVEL level) const
+  {
+    return (level >= _logLevel && _file.is_open()) || _stdoutField&level;
+  }
 protected:
   virtual void writeLog
   (std::ostream& o, LEVEL logLevel, const std::string& logLevelLabel,
@@ -192,7 +197,12 @@ public:
   // either file or stdout.
   bool debug() const
   {
-    return (DEBUG >= _logLevel && _file.is_open()) || _stdoutField&DEBUG;
+    return levelEnabled(DEBUG);
+  }
+
+  bool info() const
+  {
+    return levelEnabled(INFO);
   }
 };
 

+ 4 - 2
src/SimpleBtMessage.cc

@@ -55,8 +55,10 @@ void SimpleBtMessage::send() {
   if(!sendingInProgress) {
     const unsigned char* msg = getMessage();
     size_t msgLength = getMessageLength();
-    logger->info(MSG_SEND_PEER_MESSAGE,
-                 cuid, peer->ipaddr.c_str(), peer->port, toString().c_str());
+    if(logger->info()) {
+      logger->info(MSG_SEND_PEER_MESSAGE,
+                   cuid, peer->ipaddr.c_str(), peer->port, toString().c_str());
+    }
     if(logger->debug()) {
       logger->debug("msglength = %lu bytes",
                     static_cast<unsigned long>(msgLength));