9 #include "quill/backend/BackendOptions.h" 10 #include "quill/backend/BackendWorker.h" 24 : _backend_worker(backend_worker)
42 _backend_worker->_init(options);
56 "call init() prior to calling this function");
58 "call init() prior to calling this function");
59 assert((_backend_worker->_worker_thread_id.load() != 0) &&
60 "call init() prior to calling this function");
62 "poll() must be always called from the same thread");
64 QUILL_TRY { _backend_worker->_poll(); }
65 #if !defined(QUILL_NO_EXCEPTIONS) 66 QUILL_CATCH(std::exception
const& e) { _backend_worker->_options.
error_notifier(e.what()); }
69 _backend_worker->_options.
error_notifier(std::string{
"Caught unhandled exception."});
81 while (!_backend_worker->_check_frontend_queues_and_cached_transit_events_empty())
91 void poll(std::chrono::microseconds timeout)
93 auto const start = std::chrono::steady_clock::now();
94 while (!_backend_worker->_check_frontend_queues_and_cached_transit_events_empty())
98 auto const now = std::chrono::steady_clock::now();
100 if ((now - start) > timeout)
bool enable_yield_when_idle
The backend employs "busy-waiting" by spinning around each frontend thread's queue.
Definition: BackendOptions.h:44
void poll(std::chrono::microseconds timeout)
This function behaves like poll() but will stop polling if the specified timeout duration is reached ...
Definition: ManualBackendWorker.h:91
std::function< void(std::string const &)> error_notifier
The backend may encounter exceptions that cannot be caught within user threads.
Definition: BackendOptions.h:162
void init(BackendOptions options)
Initializes the ManualBackendWorker with the specified backend options.
Definition: ManualBackendWorker.h:38
std::chrono::nanoseconds sleep_duration
Specifies the duration the backend sleeps if there is no remaining work to process in the queues...
Definition: BackendOptions.h:49
This class can be used when you want to run the backend worker on your own thread.
Definition: ManualBackendWorker.h:20
void poll()
Continuously polls the backend worker until all queues are empty.
Definition: ManualBackendWorker.h:79
void poll_one()
Polls all thread-local SPSC queues and caches the log statements, processing and writing the log stat...
Definition: ManualBackendWorker.h:53
Definition: BackendWorker.h:72
QUILL_NODISCARD QUILL_EXPORT QUILL_ATTRIBUTE_USED uint32_t get_thread_id() noexcept
Returns the os assigned ID of the thread.
Definition: ThreadUtilities.h:193
Configuration options for the backend.
Definition: BackendOptions.h:30