|
STLdoc
STLdocumentation
|
An ordered_message_processor is a message_processor that allows message blocks to process messages in the order they were received.
More...
#include <agents.h>
Public Types | |
| typedef std::function< void(message< _Type > *)> | _Handler_method |
| The signature of the callback method invoked while processing messages. More... | |
| typedef std::function< void(void)> | _Propagator_method |
| The signature of the callback method invoked while propagating messages. More... | |
| typedef _Type | type |
| A type alias for _Type . More... | |
Public Member Functions | |
| ordered_message_processor () | |
Constructs an ordered_message_processor object. More... | |
| virtual | ~ordered_message_processor () |
Destroys the ordered_message_processor object. More... | |
| void | initialize (_Inout_opt_ Scheduler *_PScheduler, _Inout_opt_ ScheduleGroup *_PScheduleGroup, _Handler_method const &_Handler) |
Initializes the ordered_message_processor object with the appropriate callback function, scheduler and schedule group. More... | |
| virtual void | initialize_batched_processing (_Handler_method const &_Processor, _Propagator_method const &_Propagator) |
| Initialize batched message processing More... | |
| virtual void | sync_send (_Inout_opt_ message< _Type > *_Msg) |
| Synchronously queues up messages and starts a processing task, if this has not been done already. More... | |
| virtual void | async_send (_Inout_opt_ message< _Type > *_Msg) |
| Asynchronously queues up messages and starts a processing task, if this has not been done already. More... | |
| virtual void | wait () |
| A processor-specific spin wait used in destructors of message blocks to make sure that all asynchronous processing tasks have time to finish before destroying the block. More... | |
Protected Member Functions | |
| virtual void | process_incoming_message () |
| The processing function that is called asynchronously. It dequeues messages and begins processing them. More... | |
Private Member Functions | |
| void | _Clear_queued_messages () |
| void | _Sync_send_helper (message< _Type > *_Msg) |
| long | _Process_message_helper () |
| void | _Invoke_handler (long _Count) |
| void | _Invoke_handler (message< _Type > *_Msg) |
Private Attributes | |
| concurrent_queue< message< _Type > * > | _M_queuedMessages |
| A queue of the messages More... | |
| ::Concurrency::details::_NonReentrantPPLLock | _M_asyncSendLock |
| A lock to use for queueing incoming messages. More... | |
| volatile long | _M_queuedDataCount |
| A count of the current number of messages to process. Used as a flag to see if a new process message task needs to be created. More... | |
| Scheduler * | _M_pScheduler |
| The scheduler to process messages on More... | |
| ScheduleGroup * | _M_pScheduleGroup |
| The schedule group to process messages on More... | |
| volatile long | _M_stopProcessing |
| A flag set in the destructor of a block to cease processing of new messages. This is required to guarantee that _M_queuedDataCount will get to 0 eventually. More... | |
| volatile long | _M_lwtCount |
| A counter to indicate the number of outstanding LWTs More... | |
| _Handler_method | _M_handler |
| A message handler object which exposes the callback to be invoked More... | |
| _Handler_method | _M_processor |
| A message processing object which exposes the callback to be invoked More... | |
| _Propagator_method | _M_propagator |
| A message propagating object which exposes the callback to be invoked More... | |
Additional Inherited Members |
An ordered_message_processor is a message_processor that allows message blocks to process messages in the order they were received.
| _Type | The payload type of messages handled by the processor. |
| typedef std::function<void(message<_Type> *)> Concurrency::ordered_message_processor< _Type >::_Handler_method |
The signature of the callback method invoked while processing messages.
| typedef std::function<void(void)> Concurrency::ordered_message_processor< _Type >::_Propagator_method |
The signature of the callback method invoked while propagating messages.
| typedef _Type Concurrency::ordered_message_processor< _Type >::type |
A type alias for _Type .
|
inline |
Constructs an ordered_message_processor object.
This ordered_message_processor will not schedule asynchronous or synchronous handlers until the initialize function is called.
|
inlinevirtual |
Destroys the ordered_message_processor object.
Waits for all outstanding asynchronous operations before destroying the processor.
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
inlinevirtual |
Asynchronously queues up messages and starts a processing task, if this has not been done already.
| _Msg | A pointer to a message. |
Implements Concurrency::message_processor< _Type >.
|
inline |
Initializes the ordered_message_processor object with the appropriate callback function, scheduler and schedule group.
| _PScheduler | A pointer to the scheduler to be used for scheduling light-weight tasks. |
| _PScheduleGroup | A pointer to the schedule group to be used for scheduling light-weight tasks. |
| _Handler | The handler functor invoked during callback. |
|
inlinevirtual |
Initialize batched message processing
| _Processor | The processor functor invoked during callback. |
| _Propagator | The propagator functor invoked during callback. |
|
inlineprotectedvirtual |
The processing function that is called asynchronously. It dequeues messages and begins processing them.
Implements Concurrency::message_processor< _Type >.
|
inlinevirtual |
Synchronously queues up messages and starts a processing task, if this has not been done already.
| _Msg | A pointer to a message. |
Implements Concurrency::message_processor< _Type >.
|
inlinevirtual |
A processor-specific spin wait used in destructors of message blocks to make sure that all asynchronous processing tasks have time to finish before destroying the block.
Implements Concurrency::message_processor< _Type >.
|
private |
A lock to use for queueing incoming messages.
|
private |
A message handler object which exposes the callback to be invoked
|
private |
A counter to indicate the number of outstanding LWTs
|
private |
A message processing object which exposes the callback to be invoked
|
private |
A message propagating object which exposes the callback to be invoked
|
private |
The schedule group to process messages on
|
private |
The scheduler to process messages on
|
private |
A count of the current number of messages to process. Used as a flag to see if a new process message task needs to be created.
|
private |
A queue of the messages
|
private |
A flag set in the destructor of a block to cease processing of new messages. This is required to guarantee that _M_queuedDataCount will get to 0 eventually.
1.8.8