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.
Elementy członkowskie
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
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ń.
link_source
Łą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.
remove_network_links
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ą.
unlink_source
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.
unlink_sources
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