Udostępnij za pośrednictwem


propagator_block — Klasa

Klasa propagator_block jest abstrakcyjną klasą bazową dla bloków komunikatów, które są zarówno źródłem, jak i obiektem docelowym. Łączy funkcje klas source_block i target_block .

Składnia

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

Parametry

_TargetLinkRegistry
Rejestr łączy, który ma być używany do przechowywania linków docelowych.

_SourceLinkRegistry
Rejestr łączy, który ma być używany do przechowywania linków źródłowych.

_MessageProcessorType
Typ procesora do przetwarzania komunikatów.

Członkowie

Definicje typów publicznych

Nazwa/nazwisko opis
source_iterator Typ iteratora dla source_link_manager tego elementu propagator_block.

Konstruktory publiczne

Nazwa/nazwisko opis
propagator_block propagator_block Tworzy obiekt.
~propagator_block Destruktor propagator_block Niszczy obiekt.

Metody publiczne

Nazwa/nazwisko opis
Propagowanie Asynchronicznie przekazuje komunikat z bloku źródłowego do tego bloku docelowego.
Wyślij Synchronicznie inicjuje komunikat do tego bloku. Wywoływana ISource przez blok. Po zakończeniu tej funkcji komunikat zostanie już rozpropagowany do bloku.

Metody chronione

Nazwa/nazwisko opis
decline_incoming_messages Wskazuje blok, że nowe komunikaty powinny zostać odrzucone.
initialize_source_and_target Inicjuje obiekt podstawowy. W szczególności message_processor należy zainicjować obiekt.
link_source Łączy określony blok źródłowy z tym propagator_block obiektem.
process_input_messages Przetwarzanie komunikatów wejściowych. Jest to przydatne tylko w przypadku bloków propagacji, które pochodzą z source_block (przesłonięcia source_block::p rocess_input_messages).
propagate_message Po zastąpieniu w klasie pochodnej ta metoda asynchronicznie przekazuje komunikat z ISource bloku do tego propagator_block obiektu. Jest wywoływana przez metodę propagate , gdy jest wywoływana przez blok źródłowy.
register_filter Rejestruje metodę filtru, która zostanie wywołana dla każdego odebranego komunikatu.
remove_network_links Usuwa wszystkie źródłowe i docelowe łącza sieciowe z tego propagator_block obiektu.
send_message Po zastąpieniu w klasie pochodnej ta metoda synchronicznie przekazuje komunikat z ISource bloku do tego propagator_block obiektu. Jest wywoływana przez metodę send , gdy jest wywoływana przez blok źródłowy.
unlink_source Odłącza określony blok źródłowy od tego propagator_block obiektu.
unlink_sources Odłącza wszystkie bloki źródłowe z tego propagator_block obiektu. (Przesłonięcia) ITarget::unlink_sources.)

Uwagi

Aby uniknąć wielokrotnego dziedziczenia, propagator_block klasa dziedziczy z klasy i ITarget klasy abstrakcyjnej.source_block Większość funkcji w target_block klasie jest replikowana tutaj.

Hierarchia dziedziczenia

Isource

Itarget

source_block

propagator_block

Wymagania

Nagłówek: agents.h

Przestrzeń nazw: współbieżność

decline_incoming_messages

Wskazuje blok, że nowe komunikaty powinny zostać odrzucone.

void decline_incoming_messages();

Uwagi

Ta metoda jest wywoływana przez destruktor, aby upewnić się, że nowe komunikaty są odrzucane, gdy trwa niszczenie.

initialize_source_and_target

Inicjuje obiekt podstawowy. W szczególności message_processor należy zainicjować obiekt.

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

Parametry

_PScheduler
Harmonogram, który ma być używany do planowania zadań.

_PScheduleGroup
Grupa harmonogramu, która ma być używana do planowania zadań.

Łączy określony blok źródłowy z tym propagator_block obiektem.

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

Parametry

_PSource
Wskaźnik do ISource bloku, który ma być połączony.

process_input_messages

Przetwarzanie komunikatów wejściowych. Jest to przydatne tylko w przypadku bloków propagacji, które pochodzą z source_block

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

Parametry

_PMessage
Wskaźnik do komunikatu, który ma zostać przetworzony.

Propagowanie

Asynchronicznie przekazuje komunikat z bloku źródłowego do tego bloku docelowego.

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

Parametry

_PMessage
Wskaźnik do message obiektu.

_PSource
Wskaźnik do bloku źródłowego oferującego komunikat.

Wartość zwracana

Message_status wskazanie, co cel postanowił zrobić z komunikatem.

Uwagi

Metoda propagate jest wywoływana w bloku docelowym przez połączony blok źródłowy. Kolejkuje zadanie asynchroniczne do obsługi komunikatu, jeśli nie zostało jeszcze w kolejce lub jest wykonywane.

Metoda zgłasza wyjątek invalid_argument, jeśli _PMessage parametr lub _PSource ma wartość NULL .

propagate_message

Po zastąpieniu w klasie pochodnej ta metoda asynchronicznie przekazuje komunikat z ISource bloku do tego propagator_block obiektu. Jest wywoływana przez metodę propagate , gdy jest wywoływana przez blok źródłowy.

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

Parametry

_PMessage
Wskaźnik do message obiektu.

_PSource
Wskaźnik do bloku źródłowego oferującego komunikat.

Wartość zwracana

Message_status wskazanie, co cel postanowił zrobić z komunikatem.

propagator_block

propagator_block Tworzy obiekt.

propagator_block();

~propagator_block

propagator_block Niszczy obiekt.

virtual ~propagator_block();

register_filter

Rejestruje metodę filtru, która zostanie wywołana dla każdego odebranego komunikatu.

void register_filter(filter_method const& _Filter);

Parametry

_Filtr
Metoda filter.

Usuwa wszystkie źródłowe i docelowe łącza sieciowe z tego propagator_block obiektu.

void remove_network_links();

Wyślij

Synchronicznie inicjuje komunikat do tego bloku. Wywoływana ISource przez blok. Po zakończeniu tej funkcji komunikat zostanie już rozpropagowany do bloku.

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

Parametry

_PMessage
Wskaźnik do message obiektu.

_PSource
Wskaźnik do bloku źródłowego oferującego komunikat.

Wartość zwracana

Message_status wskazanie, co cel postanowił zrobić z komunikatem.

Uwagi

Ta metoda zgłasza wyjątek invalid_argument, jeśli _PMessage parametr lub _PSource ma wartość NULL .

send_message

Po zastąpieniu w klasie pochodnej ta metoda synchronicznie przekazuje komunikat z ISource bloku do tego propagator_block obiektu. Jest wywoływana przez metodę send , gdy jest wywoływana przez blok źródłowy.

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

Wartość zwracana

Message_status wskazanie, co cel postanowił zrobić z komunikatem.

Uwagi

Domyślnie ten blok jest zwracany declined , chyba że zostanie zastąpiony przez klasę pochodną.

Odłącza określony blok źródłowy od tego propagator_block obiektu.

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

Parametry

_PSource
Wskaźnik do ISource bloku, który ma być odłączony.

Odłącza wszystkie bloki źródłowe z tego propagator_block obiektu.

virtual void unlink_sources();

Zobacz też

Przestrzeń nazw współbieżności
source_block, klasa
ITarget, klasa