Handles the processing for asynchronous appender events in multiple threads.
More...
#include <Logger.qm.dox.h>
|
| constructor (ThreadPool tp, int max_threads=-1) |
| Creates the object. More...
|
|
ThreadPool | getThreadPool () |
| Returns the assigned ThreadPool.
|
|
| process (timeout ms=0) |
| Processes queue events. More...
|
|
int | size () |
| Gets number of pending events.
|
|
| process (timeout ms=0) |
| Processes queued events. More...
|
|
bool | push (LoggerAppender appender, int type, auto params) |
| Adds appender event. More...
|
|
int | size () |
| Returns the current number of events waiting in queue.
|
|
|
Queue | finishedEvents () |
| queue of processed events in worker threads
|
|
Sequence | lastId (0) |
| internal unique counter
|
|
Mutex | lock () |
| to protect process()
|
|
Counter | runningCounter (0) |
| number of running worker threads
|
|
| worker (string id, LoggerAppender appender, list< auto > events) |
| Implements worker thread code. More...
|
|
|
int | maxThreads |
| max.number of worker threads
|
|
hash< auto > | pendingEvents |
| events removed from queue but not passed to worker thread
|
|
hash< auto > | processingEvents |
| events paseed to worker thread
|
|
ThreadPool | threadPool |
| worker thread pool
|
|
|
*hash< auto > | getEvent (timeout ms) |
| Returns the next event from queue or NOTHING if there is no event available within the timeout period. More...
|
|
Handles the processing for asynchronous appender events in multiple threads.
Async events are removed from the event queue in a single thread which balances processing in multiple worker threads via a ThreadPool. This class groups events by appender so that events related to a particular appender are always processed serially in the same thread. It is compatible with Qore's Qore::OutputStream implementation where all data submitted to the output stream must be submitted from the same thread.
◆ constructor()
Logger::LoggerAppenderQueueThreadPool::constructor |
( |
ThreadPool |
tp, |
|
|
int |
max_threads = -1 |
|
) |
| |
Creates the object.
- Parameters
-
tp | worker ThreadPool where loggging events are submitted |
max_threads | max.number of worker threads, default value is -1 , i.e. unlimited |
◆ process()
Logger::LoggerAppenderQueueThreadPool::process |
( |
timeout |
ms = 0 | ) |
|
Processes queue events.
Group logging events by appender and submit them to a worker thread to be processed in a thread pool so the particular thread will handle corresponding appender instance.
- Parameters
-
ms | a timeout value to wait for data to become available on the queue; integers are interpreted as milliseconds; relative date/time values are interpreted literally with a maximum resolution of milliseconds. A value that converts to integer 0 causes the call to time out immediately if the call would otherwise block. If a positive timeout argument is passed, and no data is available in the timeout period then waits up to timeout value, If a negative timeout value is passed as the argument, then the call blocks until data is available on the queue. Default value is 0. |
◆ worker()
Logger::LoggerAppenderQueueThreadPool::worker |
( |
string |
id, |
|
|
LoggerAppender |
appender, |
|
|
list< auto > |
events |
|
) |
| |
|
private:internal |
Implements worker thread code.
- Parameters
-