Udostępnij za pośrednictwem


target_block — Klasa

Klasa target_block jest abstrakcyjną klasą bazową, która zapewnia podstawowe funkcje zarządzania linkami i sprawdzanie błędów tylko dla bloków docelowych.

Składnia

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

Parametry

_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 target_block obiektu.

Konstruktory publiczne

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

Metody publiczne

Nazwa/nazwisko opis
Propagowanie Asynchronicznie przekazuje komunikat z bloku źródłowego do tego bloku docelowego.
Wyślij Synchronicznie przekazuje komunikat z bloku źródłowego do tego bloku docelowego.

Metody chronione

Nazwa/nazwisko opis
async_send Asynchronicznie wysyła komunikat do przetwarzania.
decline_incoming_messages Wskazuje blok, że nowe komunikaty powinny zostać odrzucone.
enable_batched_processing Włącza przetwarzanie wsadowe dla tego bloku.
initialize_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 target_block obiektem.
process_input_messages Przetwarza komunikaty odbierane jako dane wejściowe.
process_message Po przesłonięciu w klasie pochodnej przetwarza komunikat akceptowany przez ten target_block obiekt.
propagate_message Po zastąpieniu w klasie pochodnej ta metoda asynchronicznie przekazuje komunikat z ISource bloku do tego target_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_sources Odłącza wszystkie źródła po oczekiwaniu na ukończenie oczekujących operacji asynchronicznych wysyłania.
send_message Po zastąpieniu w klasie pochodnej ta metoda synchronicznie przekazuje komunikat z ISource bloku do tego target_block obiektu. Jest wywoływana przez metodę send , gdy jest wywoływana przez blok źródłowy.
sync_send Synchronicznie wyślij komunikat do przetwarzania.
unlink_source Odłącza określony blok źródłowy od tego target_block obiektu.
unlink_sources Odłącza wszystkie bloki źródłowe z tego target_block obiektu. (Przesłonięcia) ITarget::unlink_sources.)
wait_for_async_sends Czeka na ukończenie wszystkich propagacji asynchronicznych.

Hierarchia dziedziczenia

ITarget

target_block

Wymagania

Nagłówek: agents.h

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

async_send

Asynchronicznie wysyła komunikat do przetwarzania.

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

Parametry

_PMessage
Wskaźnik do wysyłanej wiadomości.

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.

enable_batched_processing

Włącza przetwarzanie wsadowe dla tego bloku.

void enable_batched_processing();

initialize_target

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

void initialize_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 target_block obiektem.

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

Parametry

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

Uwagi

Ta funkcja nie powinna być wywoływana target_block bezpośrednio w obiekcie. Bloki powinny być połączone ze sobą przy użyciu link_target metody w ISource blokach, która wywoła metodę link_source w odpowiednim obiekcie docelowym.

process_input_messages

Przetwarza komunikaty odbierane jako dane wejściowe.

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

Parametry

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

process_message

Po przesłonięciu w klasie pochodnej przetwarza komunikat akceptowany przez ten target_block obiekt.

virtual void process_message(message<_Source_type> *);

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 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 target_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.

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_sources

Odłącza wszystkie źródła po oczekiwaniu na ukończenie oczekujących operacji asynchronicznych wysyłania.

void remove_sources();

Uwagi

Wszystkie bloki docelowe powinny wywoływać tę procedurę, aby usunąć źródła w ich destruktora.

Wyślij

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

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

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

send Użycie metody poza inicjowaniem komunikatów i propagowanie komunikatów w sieci jest niebezpieczne i może prowadzić do zakleszczenia.

Po send powrocie komunikat został już zaakceptowany i przeniesiony do bloku docelowego lub został odrzucony przez element docelowy.

send_message

Po zastąpieniu w klasie pochodnej ta metoda synchronicznie przekazuje komunikat z ISource bloku do tego target_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ą.

sync_send

Synchronicznie wyślij komunikat do przetwarzania.

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

Parametry

_PMessage
Wskaźnik do wysyłanej wiadomości.

target_block

target_block Tworzy obiekt.

target_block();

~target_block

target_block Niszczy obiekt.

virtual ~target_block();

Odłącza określony blok źródłowy od tego target_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 target_block obiektu.

virtual void unlink_sources();

wait_for_async_sends

Czeka na ukończenie wszystkich propagacji asynchronicznych.

void wait_for_async_sends();

Uwagi

Ta metoda jest używana przez destruktory bloków komunikatów, aby upewnić się, że wszystkie operacje asynchroniczne miały czas na zakończenie przed zniszczeniem bloku.

Zobacz też

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