Non-blocking logging sink frontend. More...
#include <unlocked_frontend.hpp>
Public Types | |
typedef SinkBackendT | sink_backend_type |
Sink implementation type. More... | |
typedef shared_ptr < sink_backend_type > | locked_backend_ptr |
Type of pointer to the backend. More... | |
typedef base_type::exception_handler_type | exception_handler_type |
An exception handler type. More... | |
Public Member Functions | |
unlocked_sink () | |
Default constructor. More... | |
unlocked_sink (shared_ptr< sink_backend_type > const &backend) | |
Constructor attaches user-constructed backend instance. More... | |
locked_backend_ptr | locked_backend () |
Locking accessor to the attached backend. More... | |
void | consume (record_view const &rec) |
Passes the log record to the backend. More... | |
void | flush () |
The method performs flushing of any internal buffers that may hold log records. More... | |
template<typename FunT > | |
void | set_filter (FunT const &filter) |
The method sets sink-specific filter functional object. More... | |
void | reset_filter () |
The method resets the filter. More... | |
template<typename FunT > | |
void | set_exception_handler (FunT const &handler) |
The method sets an exception handler function. More... | |
void | reset_exception_handler () |
The method resets the exception handler function. More... | |
bool | will_consume (attribute_value_set const &attrs) |
The method returns true if no filter is set or the attribute values pass the filter. More... | |
virtual bool | try_consume (record_view const &rec) |
The method attempts to put logging record to the sink. More... | |
bool | is_cross_thread () const BOOST_NOEXCEPT |
The method indicates that the sink passes log records between different threads. More... | |
Protected Types | |
typedef boost::log::aux::light_rw_mutex | mutex_type |
Mutex type. More... | |
Protected Member Functions | |
mutex_type & | frontend_mutex () const |
Returns reference to the frontend mutex. More... | |
exception_handler_type & | exception_handler () |
Returns reference to the exception handler. More... | |
exception_handler_type const & | exception_handler () const |
Returns reference to the exception handler. More... | |
template<typename BackendMutexT , typename BackendT > | |
void | feed_record (record_view const &rec, BackendMutexT &backend_mutex, BackendT &backend) |
Feeds log record to the backend. More... | |
template<typename BackendMutexT , typename BackendT > | |
bool | try_feed_record (record_view const &rec, BackendMutexT &backend_mutex, BackendT &backend) |
Attempts to feeds log record to the backend, does not block if backend_mutex is locked. More... | |
template<typename BackendMutexT , typename BackendT > | |
void | flush_backend (BackendMutexT &backend_mutex, BackendT &backend) |
Flushes record buffers in the backend, if one supports it. More... | |
Non-blocking logging sink frontend.
The sink frontend does not perform thread synchronization and simply passes logging records to the sink backend.
|
inherited |
An exception handler type.
typedef shared_ptr< sink_backend_type > boost::sinks::unlocked_sink< SinkBackendT >::locked_backend_ptr |
Type of pointer to the backend.
|
protectedinherited |
Mutex type.
typedef SinkBackendT boost::sinks::unlocked_sink< SinkBackendT >::sink_backend_type |
Sink implementation type.
|
inline |
Default constructor.
Constructs the sink backend instance. Requires the backend to be default-constructible.
|
inlineexplicit |
Constructor attaches user-constructed backend instance.
backend | Pointer to the backend instance |
NULL
.
|
inlinevirtual |
Passes the log record to the backend.
Implements boost::sinks::sink.
References boost::sinks::basic_sink_frontend::feed_record().
|
inlineprotectedinherited |
Returns reference to the exception handler.
|
inlineprotectedinherited |
Returns reference to the exception handler.
|
inlineprotectedinherited |
Feeds log record to the backend.
References boost::lock().
Referenced by boost::sinks::unlocked_sink< SinkBackendT >::consume(), boost::sinks::synchronous_sink< SinkBackendT >::consume(), and boost::sinks::asynchronous_sink< SinkBackendT, QueueingStrategyT >::run().
|
inlinevirtual |
The method performs flushing of any internal buffers that may hold log records.
The method may take considerable time to complete and may block both the calling thread and threads attempting to put new records into the sink while this call is in progress.
Implements boost::sinks::sink.
References boost::sinks::basic_sink_frontend::flush_backend().
|
inlineprotectedinherited |
Flushes record buffers in the backend, if one supports it.
Referenced by boost::sinks::unlocked_sink< SinkBackendT >::flush(), and boost::sinks::synchronous_sink< SinkBackendT >::flush().
|
inlineprotectedinherited |
Returns reference to the frontend mutex.
Referenced by boost::sinks::asynchronous_sink< SinkBackendT, QueueingStrategyT >::consume(), boost::sinks::asynchronous_sink< SinkBackendT, QueueingStrategyT >::feed_records(), boost::sinks::asynchronous_sink< SinkBackendT, QueueingStrategyT >::flush(), boost::sinks::asynchronous_sink< SinkBackendT, QueueingStrategyT >::run(), and boost::sinks::asynchronous_sink< SinkBackendT, QueueingStrategyT >::stop().
|
inlineinherited |
The method indicates that the sink passes log records between different threads.
This information is needed by the logging core to detach log records from all thread-specific resources before passing it to the sink.
|
inline |
Locking accessor to the attached backend.
|
inlineinherited |
The method resets the exception handler function.
References boost::lock().
|
inlineinherited |
The method resets the filter.
References boost::lock(), and boost::filter::reset().
|
inlineinherited |
The method sets an exception handler function.
References boost::lock().
|
inlineinherited |
The method sets sink-specific filter functional object.
References boost::lock().
|
inlinevirtualinherited |
The method attempts to put logging record to the sink.
The method may be used by the core in order to determine the most efficient order of sinks to feed records to in case of heavy contention. Sink implementations may implement try/backoff logic in order to improve overall logging throughput.
rec | Logging record to consume |
true
, if the record was consumed, false
, if not. Reimplemented in boost::sinks::asynchronous_sink< SinkBackendT, QueueingStrategyT >, and boost::sinks::synchronous_sink< SinkBackendT >.
|
inlineprotectedinherited |
Attempts to feeds log record to the backend, does not block if backend_mutex is locked.
References boost::empty(), boost::lock(), boost::unique_lock< Mutex >::owns_lock(), boost::unique_lock< Mutex >::swap(), and boost::try_to_lock.
Referenced by boost::sinks::synchronous_sink< SinkBackendT >::try_consume().
|
inlinevirtualinherited |
The method returns true
if no filter is set or the attribute values pass the filter.
attrs | A set of attribute values of a logging record |
Implements boost::sinks::sink.
References boost::lock().