[dss-commits] r8812 - in dss/trunk: . core

dss-commits at forum.digitalstrom.org dss-commits at forum.digitalstrom.org
Mon Oct 5 12:49:32 CEST 2009


Author: jwinkelmann
Date: 2009-10-05 12:49:32 +0200 (Mon, 05 Oct 2009)
New Revision: 8812

Modified:
   dss/trunk/core/dss.cpp
   dss/trunk/core/dss.h
   dss/trunk/core/logger.cpp
   dss/trunk/core/logger.h
   dss/trunk/main.cpp
Log:
logging: reopen log file on SIGUSR1. Closes #70

Modified: dss/trunk/core/dss.cpp
===================================================================
--- dss/trunk/core/dss.cpp	2009-10-01 10:14:01 UTC (rev 8811)
+++ dss/trunk/core/dss.cpp	2009-10-05 10:49:32 UTC (rev 8812)
@@ -56,6 +56,10 @@
 #include <string>
 #include <sstream>
 
+#ifndef WIN32
+#include <csignal>
+#endif
+
 using namespace std;
 
 namespace dss {
@@ -303,4 +307,20 @@
     return ostr.str();
   }
 
+#ifndef WIN32
+  void DSS::handleSignal(int _signum) {
+    switch (_signum) {
+      case SIGUSR1: {
+        Logger::getInstance()->reopenLogTarget();
+        break;
+      }
+      default: {
+        std::ostringstream ostr;
+        ostr << "DSS::handleSignal(): unhandled signal " << _signum << endl;
+        Logger::getInstance()->log(ostr.str(), lsWarning);
+        break;
+      }
+    }
+  }
+#endif
 }

Modified: dss/trunk/core/dss.h
===================================================================
--- dss/trunk/core/dss.h	2009-10-01 10:14:01 UTC (rev 8811)
+++ dss/trunk/core/dss.h	2009-10-05 10:49:32 UTC (rev 8812)
@@ -103,6 +103,10 @@
     static void teardown();
 #endif
     static std::string versionString();
+    
+#ifndef WIN32
+    static void handleSignal(int signum);
+#endif
 
     aDSSState getState() const { return m_State; }
 

Modified: dss/trunk/core/logger.cpp
===================================================================
--- dss/trunk/core/logger.cpp	2009-10-01 10:14:01 UTC (rev 8811)
+++ dss/trunk/core/logger.cpp	2009-10-05 10:49:32 UTC (rev 8812)
@@ -133,5 +133,9 @@
     return false;
   } // setLogTarget
 
+  bool Logger::reopenLogTarget() {
+    m_logTarget->close();
+    return m_logTarget->open();
+  }
 
 }

Modified: dss/trunk/core/logger.h
===================================================================
--- dss/trunk/core/logger.h	2009-10-01 10:14:01 UTC (rev 8811)
+++ dss/trunk/core/logger.h	2009-10-05 10:49:32 UTC (rev 8812)
@@ -52,6 +52,7 @@
     void log(const LogChannel& _channel, const std::string& _message, const aLogSeverity _severity = lsDebug);
     
     bool setLogTarget(boost::shared_ptr<LogTarget>& _logTarget);
+    bool reopenLogTarget();
     
   private:
     Logger();

Modified: dss/trunk/main.cpp
===================================================================
--- dss/trunk/main.cpp	2009-10-01 10:14:01 UTC (rev 8811)
+++ dss/trunk/main.cpp	2009-10-05 10:49:32 UTC (rev 8812)
@@ -80,6 +80,7 @@
   srand((getpid() << 16) ^ getuid() ^ time(0));
   // disable broken pipe signal
   signal(SIGPIPE, SIG_IGN);
+  signal(SIGUSR1, dss::DSS::handleSignal);
 #else
   srand( (int)time( (time_t)NULL ) );
   WSAData dat;



More information about the dss-commits mailing list