+#include <msp/core/algorithm.h>
#include <msp/io/print.h>
#include "logger.h"
void Logger::enable_channel(const string &chan)
{
- enabled_channels.insert(chan);
+ auto i = lower_bound(enabled_channels, chan);
+ if(i==enabled_channels.end() || *i!=chan)
+ enabled_channels.insert(i, chan);
}
void Logger::disable_channel(const string &chan)
{
- enabled_channels.erase(chan);
+ auto i = lower_bound(enabled_channels, chan);
+ if(i!=enabled_channels.end() && *i==chan)
+ enabled_channels.erase(i);
+}
+
+bool Logger::is_channel_enabled(const string &chan) const
+{
+ auto i = lower_bound(enabled_channels, chan);
+ return (i!=enabled_channels.end() && *i==chan);
}
void Logger::log(const string &chan, const string &message) const
{
- if(enabled_channels.count(chan))
- IO::print("%s\n", message);
+ if(is_channel_enabled(chan))
+ print(message);
+}
+
+void Logger::print(const string &message) const
+{
+ IO::print("%s\n", message);
}