Examples |
00001 // 00002 // basic_logger.hpp 00003 // ~~~~~~~~~~~~~~~~ 00004 // 00005 // Copyright (c) 2003-2007 Christopher M. Kohlhoff (chris at kohlhoff dot com) 00006 // 00007 // Distributed under the Boost Software License, Version 1.0. (See accompanying 00008 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 00009 // 00010 00011 #ifndef SERVICES_BASIC_LOGGER_HPP 00012 #define SERVICES_BASIC_LOGGER_HPP 00013 00014 #include <asio.hpp> 00015 #include <boost/noncopyable.hpp> 00016 #include <string> 00017 00018 namespace services { 00019 00022 template <typename Service> 00023 class basic_logger 00024 : private boost::noncopyable 00025 { 00026 public: 00028 typedef Service service_type; 00029 00031 typedef typename service_type::impl_type impl_type; 00032 00034 00041 explicit basic_logger(asio::io_service& io_service, 00042 const std::string& identifier) 00043 : service_(asio::use_service<Service>(io_service)), 00044 impl_(service_.null()) 00045 { 00046 service_.create(impl_, identifier); 00047 } 00048 00050 ~basic_logger() 00051 { 00052 service_.destroy(impl_); 00053 } 00054 00056 asio::io_service& io_service() 00057 { 00058 return service_.io_service(); 00059 } 00060 00062 void use_file(const std::string& file) 00063 { 00064 service_.use_file(impl_, file); 00065 } 00066 00068 void log(const std::string& message) 00069 { 00070 service_.log(impl_, message); 00071 } 00072 00073 private: 00075 service_type& service_; 00076 00078 impl_type impl_; 00079 }; 00080 00081 } // namespace services 00082 00083 #endif // SERVICES_BASIC_LOGGER_HPP