event_logger.cpp

来自「j2me is based on j2mepolish, client & se」· C++ 代码 · 共 79 行

CPP
79
字号

//         Copyright E骾n O'Callaghan 2007 - 2008.
// Distributed under the Boost Software License, Version 1.0.
//    (See accompanying file LICENSE_1_0.txt or copy at
//          http://www.boost.org/LICENSE_1_0.txt)

#include "StdAfx.hpp"

#define EVENT_LOGGER_IMPL_UNIT
#include "event_logger.hpp"

static boost::shared_ptr<event_logger_impl> s_event_logger_impl;

struct event_logger_impl
{
	mutable boost::mutex mutex_;
	boost::signal<void (boost::shared_ptr<event_type>)> event_signal_;
};

event_logger::event_logger()
{	
	init();
}

void event_logger::init()
{
	if (!s_event_logger_impl)
		s_event_logger_impl.reset(new event_logger_impl());

	pimpl = s_event_logger_impl;
}

boost::signals::connection event_logger::attach(boost::function<void (boost::shared_ptr<event_type>)> fn)
{
	boost::mutex::scoped_lock l(pimpl->mutex_);
	return pimpl->event_signal_.connect(fn);
}

void event_logger::dettach(const boost::signals::connection& c)
{
	boost::mutex::scoped_lock l(pimpl->mutex_);
	pimpl->event_signal_.disconnect(c);
}

void event_logger::post(boost::shared_ptr<event_type> evt)
{
	boost::mutex::scoped_lock l(pimpl->mutex_);
	pimpl->event_signal_(evt);
}

void event_logger::post(event_type* e)
{
	boost::mutex::scoped_lock l(pimpl->mutex_);

	boost::shared_ptr<event_type> evt(e);
	pimpl->event_signal_(evt);
}

std::wstring event_logger::event_level_to_str(event_level e)
{
	switch (e)
	{
	case dev:
		return L"Dev";
	case debug:
		return L"Debug";
	case info:
		return L"Info";
	case warning:
		return L"Warning";
	case critical:
		return L"Critical";
	case fatal:
		return L"Fatal";
	default:
		return L"None";
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?