Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "FWCore/MessageService/interface/MainThreadMLscribe.h"
00021 #include "FWCore/MessageService/interface/MessageServicePresence.h"
00022 #include "FWCore/MessageService/interface/MessageLoggerScribe.h"
00023 #include "FWCore/MessageService/interface/ThreadQueue.h"
00024
00025 #include "FWCore/MessageLogger/interface/MessageLoggerQ.h"
00026 #include "FWCore/Utilities/interface/UnixSignalHandlers.h"
00027
00028 #include <boost/bind.hpp>
00029
00030 using namespace edm::service;
00031
00032
00033 namespace {
00034 void
00035 runMessageLoggerScribe(boost::shared_ptr<ThreadQueue> queue)
00036 {
00037 sigset_t oldset;
00038 edm::disableAllSigs(&oldset);
00039 MessageLoggerScribe m(queue);
00040 m.run();
00041
00042
00043
00044
00045 }
00046 }
00047
00048 namespace edm {
00049 namespace service {
00050
00051
00052 MessageServicePresence::MessageServicePresence()
00053 : Presence()
00054 , m_queue (new ThreadQueue)
00055 , m_scribeThread
00056 ( ( (void) MessageLoggerQ::instance()
00057 , boost::bind(&runMessageLoggerScribe, m_queue)
00058
00059
00060 ) )
00061
00062
00063
00064
00065
00066
00067
00068 {
00069 MessageLoggerQ::setMLscribe_ptr(
00070 boost::shared_ptr<edm::service::AbstractMLscribe>
00071 (new MainThreadMLscribe(m_queue)));
00072
00073
00074 }
00075
00076
00077 MessageServicePresence::~MessageServicePresence()
00078 {
00079 MessageLoggerQ::MLqEND();
00080 m_scribeThread.join();
00081 MessageLoggerQ::setMLscribe_ptr
00082 (boost::shared_ptr<edm::service::AbstractMLscribe>());
00083 }
00084
00085 }
00086 }