Helper class used in multi-type non-greedy join blocks Ordered node is a single-target, single-source ordered propagator block  
 More...
 | 
|   | _Non_greedy_node (ISource< _Type > *_PSource, size_t _Index, ITarget< size_t > *_PTarget=NULL) | 
|   | Constructs a _Non_greedy_node within the default scheduler, and places it on any schedule group of the scheduler's choosing.  More...
  | 
|   | 
|   | _Non_greedy_node (ISource< _Type > *_PSource, size_t _Index, ITarget< size_t > *_PTarget, filter_method const &_Filter) | 
|   | Constructs a _Non_greedy_node within the default scheduler, and places it on any schedule group of the scheduler's choosing.  More...
  | 
|   | 
|   | _Non_greedy_node (Scheduler &_PScheduler, ISource< _Type > *_PSource, size_t _Index, ITarget< size_t > *_PTarget=NULL) | 
|   | Constructs a _Non_greedy_node within the specified scheduler, and places it on any schedule group of the scheduler's choosing.  More...
  | 
|   | 
|   | _Non_greedy_node (Scheduler &_PScheduler, ISource< _Type > *_PSource, size_t _Index, ITarget< size_t > *_PTarget, filter_method const &_Filter) | 
|   | Constructs a _Non_greedy_node within the specified scheduler, and places it on any schedule group of the scheduler's choosing.  More...
  | 
|   | 
|   | _Non_greedy_node (ScheduleGroup &_PScheduleGroup, ISource< _Type > *_PSource, size_t _Index, ITarget< size_t > *_PTarget=NULL) | 
|   | Constructs a _Non_greedy_node within the specified schedule group. The scheduler is implied by the schedule group.  More...
  | 
|   | 
|   | _Non_greedy_node (ScheduleGroup &_PScheduleGroup, ISource< _Type > *_PSource, size_t _Index, ITarget< size_t > *_PTarget, filter_method const &_Filter) | 
|   | Constructs a _Non_greedy_node within the specified schedule group. The scheduler is implied by the schedule group.  More...
  | 
|   | 
|   | ~_Non_greedy_node () | 
|   | Cleans up any resources that may have been created by the _Order_node.  More...
  | 
|   | 
| void  | _Reset () | 
|   | Resets the _Order_node and prepares it for the next propagation  More...
  | 
|   | 
| bool  | _Reserve_received_message () | 
|   | Called for a non_greedy type join block in order to reserve the message in this join block  More...
  | 
|   | 
| void  | _Consume_received_message () | 
|   | Called for a non_greedy type join block in order to consume the message in this join block that has been reserved  More...
  | 
|   | 
| bool  | _Release_received_message () | 
|   | Called for a non_greedy type join block release a reservation on this block  More...
  | 
|   | 
|   | _Order_node_base () | 
|   | Constructs a _Order_node_base within the default scheduler, and places it on any schedule group of the scheduler's choosing.  More...
  | 
|   | 
|   | ~_Order_node_base () | 
|   | Cleans up any resources that may have been created by the _Order_node.  More...
  | 
|   | 
| bool  | has_value () const  | 
|   | Checks whether this block has been initialized yet.  More...
  | 
|   | 
| _Type const &  | value () | 
|   | Gets a reference to the current payload of the message being stored.  More...
  | 
|   | 
| virtual bool  | reserve_message (runtime_object_identity) | 
|   | Reserves a message previously offered by the source.  More...
  | 
|   | 
| virtual message< size_t > *  | consume_message (runtime_object_identity) | 
|   | Consumes a message previously offered by the source and reserved by the target, transferring ownership to the caller.  More...
  | 
|   | 
| virtual void  | release_message (runtime_object_identity) | 
|   | Releases a previous message reservation.  More...
  | 
|   | 
|   | propagator_block () | 
|   | Constructs a propagator_block object.  More...
  | 
|   | 
| virtual  | ~propagator_block () | 
|   | Destroys a propagator_block object.  More...
  | 
|   | 
| virtual message_status  | propagate (_Inout_opt_ message< _Source_type > *_PMessage, _Inout_opt_ ISource< _Source_type > *_PSource) | 
|   | Asynchronously passes a message from a source block to this target block.  More...
  | 
|   | 
| virtual message_status  | send (_Inout_ message< _Source_type > *_PMessage, _Inout_ ISource< _Source_type > *_PSource) | 
|   | Synchronously initiates a message to this block. Called by an ISource block. When this function completes, the message will already have propagated into the block.  More...
  | 
|   | 
|   | source_block () | 
|   | Constructs a source_block object.  More...
  | 
|   | 
| virtual  | ~source_block () | 
|   | Destroys the source_block object.  More...
  | 
|   | 
| virtual void  | link_target (_Inout_ ITarget< _Target_type > *_PTarget) | 
|   | Links a target block to this source_block object.  More...
  | 
|   | 
| virtual void  | unlink_target (_Inout_ ITarget< _Target_type > *_PTarget) | 
|   | Unlinks a target block from this source_block object.  More...
  | 
|   | 
| virtual void  | unlink_targets () | 
|   | Unlinks all target blocks from this source_block object.  More...
  | 
|   | 
| virtual message< _Target_type > *  | accept (runtime_object_identity _MsgId, _Inout_ ITarget< _Target_type > *_PTarget) | 
|   | Accepts a message that was offered by this source_block object, transferring ownership to the caller.  More...
  | 
|   | 
| virtual bool  | reserve (runtime_object_identity _MsgId, _Inout_ ITarget< _Target_type > *_PTarget) | 
|   | Reserves a message previously offered by this source_block object.  More...
  | 
|   | 
| virtual message< _Target_type > *  | consume (runtime_object_identity _MsgId, _Inout_ ITarget< _Target_type > *_PTarget) | 
|   | Consumes a message previously offered by this source_block object and successfully reserved by the target, transferring ownership to the caller.  More...
  | 
|   | 
| virtual void  | release (runtime_object_identity _MsgId, _Inout_ ITarget< _Target_type > *_PTarget) | 
|   | Releases a previous successful message reservation.  More...
  | 
|   | 
| virtual void  | acquire_ref (_Inout_ ITarget< _Target_type > *) | 
|   | Acquires a reference count on this source_block object, to prevent deletion.  More...
  | 
|   | 
| virtual void  | release_ref (_Inout_ ITarget< _Target_type > *_PTarget) | 
|   | Releases a reference count on this source_block object.  More...
  | 
|   | 
| virtual  | ~ISource () | 
|   | Destroys the ISource object.  More...
  | 
|   | 
| virtual void  | link_target (_Inout_ ITarget< single_link_registry< ITarget< size_t > >::type::type > *_PTarget)=0 | 
|   | When overridden in a derived class, links a target block to this ISource block.  More...
  | 
|   | 
| virtual void  | unlink_target (_Inout_ ITarget< single_link_registry< ITarget< size_t > >::type::type > *_PTarget)=0 | 
|   | When overridden in a derived class, unlinks a target block from this ISource block, if found to be previously linked.  More...
  | 
|   | 
| virtual message< single_link_registry< ITarget< size_t > >::type::type > *  | accept (runtime_object_identity _MsgId, _Inout_ ITarget< single_link_registry< ITarget< size_t > >::type::type > *_PTarget)=0 | 
|   | When overridden in a derived class, accepts a message that was offered by this ISource block, transferring ownership to the caller.  More...
  | 
|   | 
| virtual bool  | reserve (runtime_object_identity _MsgId, _Inout_ ITarget< single_link_registry< ITarget< size_t > >::type::type > *_PTarget)=0 | 
|   | When overridden in a derived class, reserves a message previously offered by this ISource block.  More...
  | 
|   | 
| virtual message< single_link_registry< ITarget< size_t > >::type::type > *  | consume (runtime_object_identity _MsgId, _Inout_ ITarget< single_link_registry< ITarget< size_t > >::type::type > *_PTarget)=0 | 
|   | When overridden in a derived class, consumes a message previously offered by this ISource block and successfully reserved by the target, transferring ownership to the caller.  More...
  | 
|   | 
| virtual void  | release (runtime_object_identity _MsgId, _Inout_ ITarget< single_link_registry< ITarget< size_t > >::type::type > *_PTarget)=0 | 
|   | When overridden in a derived class, releases a previous successful message reservation.  More...
  | 
|   | 
| virtual void  | acquire_ref (_Inout_ ITarget< single_link_registry< ITarget< size_t > >::type::type > *_PTarget)=0 | 
|   | When overridden in a derived class, acquires a reference count on this ISource block, to prevent deletion.  More...
  | 
|   | 
| virtual void  | release_ref (_Inout_ ITarget< single_link_registry< ITarget< size_t > >::type::type > *_PTarget)=0 | 
|   | When overridden in a derived class, releases a reference count on this ISource block.  More...
  | 
|   | 
| virtual  | ~ITarget () | 
|   | Destroys the ITarget object.  More...
  | 
|   | 
| virtual message_status  | propagate (_Inout_opt_ message< multi_link_registry< ISource< _Type > >::type::source_type > *_PMessage, _Inout_opt_ ISource< multi_link_registry< ISource< _Type > >::type::source_type > *_PSource)=0 | 
|   | When overridden in a derived class, asynchronously passes a message from a source block to this target block.  More...
  | 
|   | 
| virtual message_status  | send (_Inout_ message< multi_link_registry< ISource< _Type > >::type::source_type > *_PMessage, _Inout_ ISource< multi_link_registry< ISource< _Type > >::type::source_type > *_PSource)=0 | 
|   | When overridden in a derived class, synchronously passes a message to the target block.  More...
  | 
|   | 
| virtual bool  | supports_anonymous_source () | 
|   | When overridden in a derived class, returns true or false depending on whether the message block accepts messages offered by a source that is not linked to it. If the overridden method returns true, the target cannot postpone an offered message, as consumption of a postponed message at a later time requires the source to be identified in its source link registry.  More...
  | 
|   | 
 | 
| virtual message_status  | propagate_message (message< _Type > *_PMessage, ISource< _Type > *) | 
|   | Asynchronously passes a message from an ISource block to this ITarget block. It is invoked by the propagate method, when called by a source block.  More...
  | 
|   | 
| virtual message< size_t > *  | accept_message (runtime_object_identity _MsgId) | 
|   | Accept the message by making a copy of the payload.  More...
  | 
|   | 
| virtual void  | propagate_to_any_targets (_Inout_opt_ message< size_t > *) | 
|   | Takes the message and propagates it to all the targets of this _Order_node  More...
  | 
|   | 
| virtual void  | resume_propagation () | 
|   | Resumes propagation after a reservation has been released  More...
  | 
|   | 
| virtual void  | link_target_notification (_Inout_ ITarget< size_t > *) | 
|   | Notification that a target was linked to this source.  More...
  | 
|   | 
| void  | _Create_send_message () | 
|   | Create a message that contains an index used to determine the source message  More...
  | 
|   | 
| void  | _Initialize_order_node (ISource< _Type > *_PSource, size_t _Index, ITarget< size_t > *_PTarget, Scheduler *_PScheduler=NULL, ScheduleGroup *_PScheduleGroup=NULL) | 
|   | Validate constructor arguments and fully connect this _Order_node_base.  More...
  | 
|   | 
| virtual message_status  | propagate_message (_Inout_ message< _Source_type > *_PMessage, _Inout_ ISource< _Source_type > *_PSource)=0 | 
|   | When overridden in a derived class, this method asynchronously passes a message from an ISource block to this propagator_block object. It is invoked by the propagate method, when called by a source block.  More...
  | 
|   | 
| virtual message_status  | send_message (_Inout_ message< _Source_type > *, _Inout_ ISource< _Source_type > *) | 
|   | When overridden in a derived class, this method synchronously passes a message from an ISource block to this propagator_block object. It is invoked by the send method, when called by a source block.  More...
  | 
|   | 
| virtual void  | link_source (_Inout_ ISource< _Source_type > *_PSource) | 
|   | Links a specified source block to this propagator_block object.  More...
  | 
|   | 
| virtual void  | unlink_source (_Inout_ ISource< _Source_type > *_PSource) | 
|   | Unlinks a specified source block from this propagator_block object.  More...
  | 
|   | 
| virtual void  | unlink_sources () | 
|   | Unlinks all source blocks from this propagator_block object.  More...
  | 
|   | 
| virtual void  | process_input_messages (_Inout_ message< _Target_type > *) | 
|   | Process input messages. This is only useful for propagator blocks, which derive from source_block  More...
  | 
|   | 
| void  | initialize_source_and_target (_Inout_opt_ Scheduler *_PScheduler=NULL, _Inout_opt_ ScheduleGroup *_PScheduleGroup=NULL) | 
|   | Initializes the base object. Specifically, the message_processor object needs to be initialized.  More...
  | 
|   | 
| void  | register_filter (filter_method const &_Filter) | 
|   | Registers a filter method that will be invoked on every received message.  More...
  | 
|   | 
| void  | decline_incoming_messages () | 
|   | Indicates to the block that new messages should be declined.  More...
  | 
|   | 
| void  | remove_network_links () | 
|   | Removes all the source and target network links from this propagator_block object.  More...
  | 
|   | 
| virtual void  | link_target_notification (_Inout_ ITarget< _Target_type > *) | 
|   | A callback that notifies that a new target has been linked to this source_block object.  More...
  | 
|   | 
| virtual void  | unlink_target_notification (_Inout_ ITarget< _Target_type > *_PTarget) | 
|   | A callback that notifies that a target has been unlinked from this source_block object.  More...
  | 
|   | 
| virtual void  | propagate_output_messages () | 
|   | Propagate messages to targets.  More...
  | 
|   | 
| virtual void  | propagate_to_any_targets (_Inout_opt_ message< _Target_type > *_PMessage) | 
|   | When overridden in a derived class, propagates the given message to any or all of the linked targets. This is the main propagation routine for message blocks.  More...
  | 
|   | 
| void  | initialize_source (_Inout_opt_ Scheduler *_PScheduler=NULL, _Inout_opt_ ScheduleGroup *_PScheduleGroup=NULL) | 
|   | Initializes the message_propagator within this source_block.  More...
  | 
|   | 
| void  | enable_batched_processing () | 
|   | Enables batched processing for this block.  More...
  | 
|   | 
| virtual void  | sync_send (_Inout_opt_ message< _Target_type > *_Msg) | 
|   | Synchronously queues up messages and starts a propagation task, if this has not been done already.  More...
  | 
|   | 
| virtual void  | async_send (_Inout_opt_ message< _Target_type > *_Msg) | 
|   | Asynchronously queues up messages and starts a propagation task, if this has not been done already  More...
  | 
|   | 
| void  | wait_for_outstanding_async_sends () | 
|   | Waits for all asynchronous propagations to complete. This propagator-specific spin wait is used in destructors of message blocks to make sure that all asynchronous propagations have time to finish before destroying the block.  More...
  | 
|   | 
| void  | remove_targets () | 
|   | Removes all target links for this source block. This should be called from the destructor.  More...
  | 
|   | 
| void  | _Invoke_link_source (ITarget< single_link_registry< ITarget< size_t > >::type::type > *_PLinkFrom) | 
|   | Links this source to a target.  More...
  | 
|   | 
| void  | _Invoke_unlink_source (ITarget< single_link_registry< ITarget< size_t > >::type::type > *_PUnlinkFrom) | 
|   | Unlinks this source from a target.  More...
  | 
|   | 
| virtual void  | link_source (_Inout_ ISource< multi_link_registry< ISource< _Type > >::type::source_type > *_PSource)=0 | 
|   | When overridden in a derived class, links a specified source block to this ITarget block.  More...
  | 
|   | 
| virtual void  | unlink_source (_Inout_ ISource< multi_link_registry< ISource< _Type > >::type::source_type > *_PSource)=0 | 
|   | When overridden in a derived class, unlinks a specified source block from this ITarget block.  More...
  | 
|   | 
template<class _Type>
class Concurrency::_Non_greedy_node< _Type >
Helper class used in multi-type non-greedy join blocks Ordered node is a single-target, single-source ordered propagator block 
- Template Parameters
 -