File: Log.cpp

package info (click to toggle)
eris 1.3.10-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 2,592 kB
  • ctags: 1,516
  • sloc: cpp: 9,850; sh: 8,288; perl: 287; ansic: 165; makefile: 162
file content (59 lines) | stat: -rw-r--r-- 1,295 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#ifdef HAVE_CONFIG_H
    #include "config.h"
#endif

#include <Eris/Log.h>

#include <cassert>
#include <stdio.h>
#include <algorithm>

#include <Atlas/Codecs/Bach.h>
#include <Atlas/Message/MEncoder.h>
#include <Atlas/Objects/Operation.h>
#include <Atlas/Objects/Root.h>
#include <Atlas/Objects/Encoder.h>

#include <iostream>

namespace Eris
{

static LogLevel _logLevel = DEFAULT_LOG;    
SigC::Signal2<void, LogLevel, const std::string&> Logged;
    
void setLogLevel(LogLevel lvl)
{
    _logLevel = lvl;
}    
    
LogLevel getLogLevel()
{
    return _logLevel;
}

void doLog(LogLevel lvl, const std::string& msg)
{
    if (lvl <= _logLevel)
        Logged.emit(lvl, msg);
}

std::ostream& operator<<(std::ostream& os, const Atlas::Objects::Root& obj)
{
    std::stringstream s;
    Atlas::Codecs::Bach debugCodec(s, *(Atlas::Bridge*)0);
    Atlas::Objects::ObjectsEncoder debugEncoder(debugCodec);
    debugEncoder.streamObjectsMessage(obj);
    return os << s.str();
}

std::ostream& operator<<(std::ostream& os, const Atlas::Message::Element& msg)
{
    std::stringstream s;
    Atlas::Codecs::Bach debugCodec(s, *(Atlas::Bridge*)0);
    Atlas::Message::Encoder debugEncoder(debugCodec);
    debugEncoder.streamMessageElement(msg.asMap());
    return os << s.str();
}

} // of namespace