Skip to content
Snippets Groups Projects
Commit 14e57e84 authored by Olivier Stasse's avatar Olivier Stasse
Browse files

[entity] Add set/getTimeSample and set/getStreamPrintPeriod.

This should be externalized as it has an impact on output
messages.
parent b2202b5f
No related branches found
No related tags found
No related merge requests found
Pipeline #4067 passed with warnings
...@@ -112,7 +112,24 @@ namespace dynamicgraph ...@@ -112,7 +112,24 @@ namespace dynamicgraph
/// \brief Get the logger's verbosity level. /// \brief Get the logger's verbosity level.
LoggerVerbosity getLoggerVerbosityLevel() LoggerVerbosity getLoggerVerbosityLevel()
{ return logger_.getVerbosity(); }; { return logger_.getVerbosity(); }
/// \brief Set the time sample.
bool setTimeSample(double t)
{ return logger_.setTimeSample(t); }
/// \brief Get the time sample.
double getTimeSample()
{ return logger_.getTimeSample();}
/// \brief Set the period of the stream period
bool setStreamPrintPeriod(double t)
{ return logger_.setStreamPrintPeriod(t); }
/// \brief Get the period of the stream period
double getStreamPrintPeriod()
{ return logger_.getStreamPrintPeriod();}
protected: protected:
void addCommand(const std::string& name,command::Command* command); void addCommand(const std::string& name,command::Command* command);
......
...@@ -178,9 +178,16 @@ namespace dynamicgraph { ...@@ -178,9 +178,16 @@ namespace dynamicgraph {
* is going to be called. */ * is going to be called. */
bool setTimeSample(double t); bool setTimeSample(double t);
/** Get the sampling time at which the method countdown()
* is going to be called. */
double getTimeSample();
/** Set the time period for printing of streaming messages. */ /** Set the time period for printing of streaming messages. */
bool setStreamPrintPeriod(double s); bool setStreamPrintPeriod(double s);
/** Get the time period for printing of streaming messages. */
double getStreamPrintPeriod();
/** Set the verbosity level of the logger. */ /** Set the verbosity level of the logger. */
void setVerbosity(LoggerVerbosity lv); void setVerbosity(LoggerVerbosity lv);
......
...@@ -62,7 +62,7 @@ namespace dynamicgraph ...@@ -62,7 +62,7 @@ namespace dynamicgraph
return; return;
// if print is allowed by current verbosity level // if print is allowed by current verbosity level
if(isStreamMsg(type)) if( isStreamMsg(type))
{ {
// check whether counter already exists // check whether counter already exists
string id = file+toString(line); string id = file+toString(line);
...@@ -101,4 +101,14 @@ namespace dynamicgraph ...@@ -101,4 +101,14 @@ namespace dynamicgraph
m_streamPrintPeriod = s; m_streamPrintPeriod = s;
return true; return true;
} }
double Logger::getTimeSample()
{
return m_timeSample;
}
double Logger::getStreamPrintPeriod()
{
return m_streamPrintPeriod;
}
} // namespace dynamicgraph } // namespace dynamicgraph
...@@ -87,22 +87,22 @@ namespace dynamicgraph ...@@ -87,22 +87,22 @@ namespace dynamicgraph
int threadPolicy; int threadPolicy;
struct sched_param threadParam; struct sched_param threadParam;
if (pthread_getschedparam (pthread_self(), &threadPolicy, &threadParam) == 0) if (pthread_getschedparam (pthread_self(), &threadPolicy, &threadParam) == 0)
{ {
threadPolicy = SCHED_OTHER; threadPolicy = SCHED_OTHER;
threadParam.sched_priority -= 5; threadParam.sched_priority -= 5;
if (threadParam.sched_priority < sched_get_priority_min (threadPolicy)) if (threadParam.sched_priority < sched_get_priority_min (threadPolicy))
threadParam.sched_priority = sched_get_priority_min (threadPolicy); threadParam.sched_priority = sched_get_priority_min (threadPolicy);
pthread_setschedparam (pthread_self(), threadPolicy, &threadParam); pthread_setschedparam (pthread_self(), threadPolicy, &threadParam);
} }
while (!requestShutdown_ || !logger->empty()) while (!requestShutdown_ || !logger->empty())
{ {
// If the logger did not write anything, it means the buffer is empty. // If the logger did not write anything, it means the buffer is empty.
// Do a pause // Do a pause
if (!logger->spinOnce()) if (!logger->spinOnce())
boost::this_thread::sleep(boost::posix_time::milliseconds(100)); boost::this_thread::sleep(boost::posix_time::milliseconds(100));
} }
} }
}; };
......
...@@ -16,11 +16,15 @@ ...@@ -16,11 +16,15 @@
#include <dynamic-graph/real-time-logger.h> #include <dynamic-graph/real-time-logger.h>
#include <dynamic-graph/logger.h> #include <dynamic-graph/logger.h>
#define BOOST_TEST_MODULE debug-logger #define BOOST_TEST_MODULE debug-logger
#include <boost/test/unit_test.hpp> #include <boost/test/unit_test.hpp>
#include <boost/test/output_test_stream.hpp> #include <boost/test/output_test_stream.hpp>
#include <boost/thread/thread.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
using boost::test_tools::output_test_stream; using boost::test_tools::output_test_stream;
...@@ -78,7 +82,7 @@ BOOST_AUTO_TEST_CASE(debug_logger_wrong_initialization) ...@@ -78,7 +82,7 @@ BOOST_AUTO_TEST_CASE(debug_logger_wrong_initialization)
dynamicgraph::FactoryStorage::getInstance()->newEntity("CustomEntity", dynamicgraph::FactoryStorage::getInstance()->newEntity("CustomEntity",
"my-entity-2"))); "my-entity-2")));
for(unsigned int i=0;i<10000;i++) for(unsigned int i=0;i<1000;i++)
{ {
entity.testDebugTrace(); entity.testDebugTrace();
} }
......
...@@ -78,6 +78,11 @@ BOOST_AUTO_TEST_CASE(debug_logger) ...@@ -78,6 +78,11 @@ BOOST_AUTO_TEST_CASE(debug_logger)
dynamicgraph::FactoryStorage::getInstance()->newEntity("CustomEntity", dynamicgraph::FactoryStorage::getInstance()->newEntity("CustomEntity",
"my-entity"))); "my-entity")));
entity.setTimeSample(0.002);
BOOST_CHECK_EQUAL(entity.getTimeSample(),0.002);
entity.setStreamPrintPeriod(0.004);
BOOST_CHECK_EQUAL(entity.getStreamPrintPeriod(),0.004);
for(unsigned int i=0;i<10000;i++) for(unsigned int i=0;i<10000;i++)
{ {
entity.testDebugTrace(); entity.testDebugTrace();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment