Share via


target_block-klasse

De target_block klasse is een abstracte basisklasse die eenvoudige functionaliteit voor koppelingsbeheer en foutcontrole biedt voor alleen doelblokken.

Syntaxis

template<class _SourceLinkRegistry, class _MessageProcessorType = ordered_message_processor<typename _SourceLinkRegistry::type::source_type>>
class target_block : public ITarget<typename _SourceLinkRegistry::type::source_type>;

Parameterwaarden

_SourceLinkRegistry
Het koppelingsregister dat moet worden gebruikt voor het opslaan van de bronkoppelingen.

_MessageProcessorType
Het processortype voor berichtverwerking.

Leden

Openbare typedefs

Naam Description
source_iterator Het type van de iterator voor de source_link_manager voor dit target_block object.

Openbare constructors

Naam Description
target_block Maakt een target_block object.
~target_block Destructor Vernietigt het target_block object.

Openbare methoden

Naam Description
Propageren Asynchroon geeft een bericht van een bronblok door aan dit doelblok.
Verzenden Hiermee wordt een bericht van een bronblok synchroon doorgegeven aan dit doelblok.

Beveiligde methoden

Naam Description
async_send Het systeem verzendt asynchroon een bericht voor verwerking.
decline_incoming_messages Geeft aan het blok aan dat nieuwe berichten moeten worden geweigerd.
verwerking_in_batches_inschakelen Hiermee schakelt u batchverwerking voor dit blok in.
initialize_target Initialiseert het basisobject. message_processor Het object moet specifiek worden geïnitialiseerd.
link_source Hiermee koppelt u een opgegeven bronblok aan dit target_block object.
process_input_messages Hiermee worden berichten verwerkt die als invoer worden ontvangen.
process_message Wanneer overschreven in een afgeleide klasse, verwerkt het een bericht dat door dit target_block object is geaccepteerd.
propagate_message Wanneer deze methode wordt overschreven in een afgeleide klasse, geeft deze methode asynchroon een bericht van een ISource blok door aan dit target_block object. Deze wordt aangeroepen door de propagate methode, wanneer deze wordt aangeroepen door een bronblok.
register_filter Registreert een filtermethode die wordt aangeroepen voor elk ontvangen bericht.
verwijder_bronnen Hiermee ontkoppelt u alle bronnen nadat u hebt gewacht tot openstaande asynchrone verzendbewerkingen zijn voltooid.
send_message Wanneer deze methode in een afgeleide klasse wordt overschreven, geeft deze methode een bericht van een ISource blok aan dit target_block object synchroon door. Deze wordt aangeroepen door de send methode, wanneer deze wordt aangeroepen door een bronblok.
sync_send Verzend synchroon een bericht voor verwerking.
unlink_source Hiermee ontkoppelt u een opgegeven bronblok van dit target_block object.
unlink_sources Hiermee ontkoppelt u alle bronblokken van dit target_block object. (Overschrijft ITarget::unlink_sources.)
wacht_op_asynchrone_verzendingen Wacht totdat alle asynchrone propagaties zijn voltooid.

Overnamehiërarchie

ITarget

target_block

Requirements

Header: agents.h

Naamruimte: concurrentie

async_send

Het systeem verzendt asynchroon een bericht voor verwerking.

void async_send(_Inout_opt_ message<_Source_type>* _PMessage);

Parameterwaarden

_PMessage
Een aanwijzer naar het bericht dat wordt verzonden.

inkomende_berichten_afwijzen

Geeft aan het blok aan dat nieuwe berichten moeten worden geweigerd.

void decline_incoming_messages();

Opmerkingen

Deze methode wordt aangeroepen door de destructor om ervoor te zorgen dat nieuwe berichten worden geweigerd terwijl de vernietiging wordt uitgevoerd.

de_batchverwerking_inschakelen

Hiermee schakelt u batchverwerking voor dit blok in.

void enable_batched_processing();

initialiseer_doel

Initialiseert het basisobject. message_processor Het object moet specifiek worden geïnitialiseerd.

void initialize_target(
    _Inout_opt_ Scheduler* _PScheduler = NULL,
    _Inout_opt_ ScheduleGroup* _PScheduleGroup = NULL);

Parameterwaarden

_PScheduler
De planner die moet worden gebruikt voor het plannen van taken.

_PScheduleGroup
De planningsgroep die moet worden gebruikt voor het plannen van taken.

Hiermee koppelt u een opgegeven bronblok aan dit target_block object.

virtual void link_source(_Inout_ ISource<_Source_type>* _PSource);

Parameterwaarden

_PSource
Een aanwijzer naar het ISource blok dat moet worden gekoppeld.

Opmerkingen

Deze functie mag niet rechtstreeks op een target_block object worden aangeroepen. Blokken moeten worden verbonden met behulp van de link_target methode op ISource blokken, waarmee de link_source methode op het bijbehorende doel wordt aangeroepen.

verwerk_invoersberichten

Hiermee worden berichten verwerkt die als invoer worden ontvangen.

virtual void process_input_messages(_Inout_ message<_Source_type>* _PMessage);

Parameterwaarden

_PMessage
Een aanwijzer naar het bericht dat moet worden verwerkt.

process_message

Wanneer overschreven in een afgeleide klasse, verwerkt het een bericht dat door dit target_block object is geaccepteerd.

virtual void process_message(message<_Source_type> *);

Doorgeven

Asynchroon geeft een bericht van een bronblok door aan dit doelblok.

virtual message_status propagate(
    _Inout_opt_ message<_Source_type>* _PMessage,
    _Inout_opt_ ISource<_Source_type>* _PSource);

Parameterwaarden

_PMessage
Een aanwijzer naar het message object.

_PSource
Een aanwijzer naar het bronblok dat het bericht aanbiedt.

Retourwaarde

Een message_status indicatie van wat het doel heeft besloten te doen met het bericht.

Opmerkingen

De methode gooit een invalid_argument uitzondering indien de _PMessage of _PSource parameter NULL is.

propagate_message

Wanneer deze methode wordt overschreven in een afgeleide klasse, geeft deze methode asynchroon een bericht van een ISource blok door aan dit target_block object. Deze wordt aangeroepen door de propagate methode, wanneer deze wordt aangeroepen door een bronblok.

virtual message_status propagate_message(
    _Inout_ message<_Source_type>* _PMessage,
    _Inout_ ISource<_Source_type>* _PSource) = 0;

Parameterwaarden

_PMessage
Een aanwijzer naar het message object.

_PSource
Een aanwijzer naar het bronblok dat het bericht aanbiedt.

Retourwaarde

Een message_status indicatie van wat het doel heeft besloten te doen met het bericht.

register_filter

Registreert een filtermethode die wordt aangeroepen voor elk ontvangen bericht.

void register_filter(filter_method const& _Filter);

Parameterwaarden

_Filter
De filtermethode.

bronnen_verwijderen

Hiermee ontkoppelt u alle bronnen nadat u hebt gewacht tot openstaande asynchrone verzendbewerkingen zijn voltooid.

void remove_sources();

Opmerkingen

Alle doelblokken moeten deze routine aanroepen om de bronnen in hun destructor te verwijderen.

Verzenden

Hiermee wordt een bericht van een bronblok synchroon doorgegeven aan dit doelblok.

virtual message_status send(
    _Inout_ message<_Source_type>* _PMessage,
    _Inout_ ISource<_Source_type>* _PSource);

Parameterwaarden

_PMessage
Een aanwijzer naar het message object.

_PSource
Een aanwijzer naar het bronblok dat het bericht aanbiedt.

Retourwaarde

Een message_status indicatie van wat het doel heeft besloten te doen met het bericht.

Opmerkingen

De methode gooit een invalid_argument uitzondering indien de _PMessage of _PSource parameter NULL is.

Het gebruik van de send methode buiten de initiatie van berichten en om berichten binnen een netwerk door te geven is gevaarlijk en kan leiden tot impasses.

Wanneer send terugkeert, is het bericht ofwel al geaccepteerd en overgebracht naar het doelblok, of het is geweigerd door het doel.

bericht_verzenden

Wanneer deze methode in een afgeleide klasse wordt overschreven, geeft deze methode een bericht van een ISource blok aan dit target_block object synchroon door. Deze wordt aangeroepen door de send methode, wanneer deze wordt aangeroepen door een bronblok.

virtual message_status send_message(
    _Inout_ message<_Source_type> *,
    _Inout_ ISource<_Source_type> *);

Retourwaarde

Een message_status indicatie van wat het doel heeft besloten te doen met het bericht.

Opmerkingen

Dit blok retourneert declined standaard, tenzij dit wordt overschreven door een afgeleide klasse.

sync_send

Verzend synchroon een bericht voor verwerking.

void sync_send(_Inout_opt_ message<_Source_type>* _PMessage);

Parameterwaarden

_PMessage
Een aanwijzer naar het bericht dat wordt verzonden.

target_block

Maakt een target_block object.

target_block();

~target_block

Vernietigt het target_block object.

virtual ~target_block();

Hiermee ontkoppelt u een opgegeven bronblok van dit target_block object.

virtual void unlink_source(_Inout_ ISource<_Source_type>* _PSource);

Parameterwaarden

_PSource
Een aanwijzer naar het ISource blok dat moet worden ontkoppeld.

Hiermee ontkoppelt u alle bronblokken van dit target_block object.

virtual void unlink_sources();

wait_for_async_sends (wachten_op_asynchrone_verzendingen)

Wacht totdat alle asynchrone propagaties zijn voltooid.

void wait_for_async_sends();

Opmerkingen

Deze methode wordt door destructors van berichtblokken gebruikt om ervoor te zorgen dat alle asynchrone bewerkingen de tijd hebben gehad om te zijn voltooid voordat het blok wordt vernietigd.

Zie ook

concurrentie Namespace
ITarget-klasse