summaryrefslogtreecommitdiff
path: root/cesar/maximus/utils
diff options
context:
space:
mode:
authorschodet2008-09-16 14:45:41 +0000
committerschodet2008-09-16 14:45:41 +0000
commit45457d70096cb25c3aa96473ca2993f8c8bff0ad (patch)
tree3656247500230f05f189b40560a7e693732038a7 /cesar/maximus/utils
parenta9e530f9ccb1a7e846b44fc8b1d02400ef23b4fe (diff)
* maximus/utils:
- added a temporary maximus log speed-up. git-svn-id: svn+ssh://pessac/svn/cesar/trunk@2986 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar/maximus/utils')
-rw-r--r--cesar/maximus/utils/inc/Logger.h6
-rw-r--r--cesar/maximus/utils/inc/LoggerStream.h62
-rw-r--r--cesar/maximus/utils/src/Logger.cpp8
3 files changed, 69 insertions, 7 deletions
diff --git a/cesar/maximus/utils/inc/Logger.h b/cesar/maximus/utils/inc/Logger.h
index 414c918640..a5ba914445 100644
--- a/cesar/maximus/utils/inc/Logger.h
+++ b/cesar/maximus/utils/inc/Logger.h
@@ -3,6 +3,7 @@
#define LOGGER_H
#include "networkclock_types.h" // for 'Network_Clock_Tick'
+#include "LoggerStream.h"
#include <fstream> // for 'std::ostream' and 'std::ofstream'
@@ -57,7 +58,7 @@ class Logger
/**
* Operator to pass the message to the stream
*/
- friend std::ostream & operator<< ( std::ostream & os, const Logger & logger );
+ friend LoggerStream operator<< ( std::ostream & os, const Logger & logger );
/**
* Function to set the stream
@@ -98,7 +99,8 @@ private:
};
-
extern Logger logger;
+LoggerStream operator<< ( std::ostream & os, const Logger & logger );
+
#endif // LOGGER_H
diff --git a/cesar/maximus/utils/inc/LoggerStream.h b/cesar/maximus/utils/inc/LoggerStream.h
new file mode 100644
index 0000000000..30da85f876
--- /dev/null
+++ b/cesar/maximus/utils/inc/LoggerStream.h
@@ -0,0 +1,62 @@
+#ifndef maximus_utils_inc_LoggerStream_h
+#define maximus_utils_inc_LoggerStream_h
+/* Cesar project {{{
+ *
+ * Copyright (C) 2008 Spidcom
+ *
+ * <<<Licence>>>
+ *
+ * }}} */
+
+#include <iostream>
+
+class LoggerStream
+{
+public:
+ /**
+ * Default constructor, black hole logger.
+ */
+ LoggerStream (void)
+ : mOs (0) { }
+ /**
+ * Constructor with an output stream, log to this stream.
+ */
+ explicit
+ LoggerStream (std::ostream &os)
+ : mOs (&os) { }
+ /**
+ * Output operators.
+ */
+ template<typename T>
+ const LoggerStream &
+ operator<< (const T &rhs) const
+ {
+ if (mOs)
+ *mOs << rhs;
+ return *this;
+ }
+ /**
+ * Output operators for iomanips.
+ */
+ const LoggerStream &
+ operator<< (std::ostream & (*rhs) (std::ostream&)) const
+ {
+ if (mOs)
+ *mOs << rhs;
+ return *this;
+ }
+ /**
+ * Output operators for iomanips.
+ */
+ const LoggerStream &
+ operator<< (std::ios & (*rhs) (std::ios&)) const
+ {
+ if (mOs)
+ *mOs << rhs;
+ return *this;
+ }
+private:
+ std::ostream *mOs;
+};
+
+#endif /* maximus_utils_inc_LoggerStream_h */
diff --git a/cesar/maximus/utils/src/Logger.cpp b/cesar/maximus/utils/src/Logger.cpp
index e445673a05..679314fbec 100644
--- a/cesar/maximus/utils/src/Logger.cpp
+++ b/cesar/maximus/utils/src/Logger.cpp
@@ -52,10 +52,8 @@ Logger & Logger::operator() ( int msg_level )
}
-ostream & operator<< ( ostream & os, const Logger & logger )
+LoggerStream operator<< ( ostream & os, const Logger & logger )
{
- static ofstream bin ("/dev/null");
-
if (logger.getMsgLevel() >= logger.getLogLevel())
{
os << "Maximus(" << dec << logger.getCurrentTickValue() << "): ";
@@ -67,11 +65,11 @@ ostream & operator<< ( ostream & os, const Logger & logger )
{
os << "ERROR ";
}
- return os;
+ return LoggerStream (os);
}
else
{
- return bin;
+ return LoggerStream ();
}
}