Класс propagator_block

Класс propagator_block является абстрактным базовым классом для блоков сообщений, которые одновременно исходные и целевые. Объединяет функциональные возможности обоих классов source_block и target_block.

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>;

Параметры

  • _TargetLinkRegistry
    Реестр ссылок для использования для хранения целевых ссылок.

  • _SourceLinkRegistry
    Реестр ссылок для использования для хранения исходных ссылок.

  • _MessageProcessorType
    Тип процессора для обработки сообщений.

Члены

Общедоступные Typedefs

Имя

Описание

source_iterator

Тип итератора для source_link_manager для данного propagator_block.

Открытые конструкторы

Имя

Описание

Конструктор propagator_block::propagator_block

Создает объект propagator_block.

Деструктор propagator_block::~propagator_block

Удаляет объект propagator_block.

Открытые методы

Имя

Описание

Метод propagator_block::propagate

Асинхронно передает сообщение из исходного блока данному целевому блоку.

Метод propagator_block::send

Синхронно вызывает сообщение на этот блок. Вызывается блоком ISource. По завершении этой функции сообщение уже будет распространено в блок.

Защищенные методы

Имя

Описание

Метод propagator_block::decline_incoming_messages

Указывает блоку, что новые сообщения должны быть отклонены.

Метод propagator_block::initialize_source_and_target

Инициализирует базовый объект. В частности, объект message_processor необходимо инициализировать.

Метод propagator_block::link_source

Связывает указанный блок источника с данным объектом propagator_block.

Метод propagator_block::process_input_messages

Обработка входного сообщения. Это полезно только для блоков распространения, которые являются производными от source_block (Переопределяет source_block::process_input_messages).

Метод propagator_block::propagate_message

При переопределении в производном классе этот метод асинхронно передает сообщение из блока ISource этому объекту propagator_block. Вызывается методом propagate при вызове исходного блока.

Метод propagator_block::register_filter

Регистрирует метод фильтра, который будет вызван на каждое полученное сообщение.

Метод propagator_block::remove_network_links

Удаляет все исходные и целевые сетевые ссылки из этого объекта propagator_block.

Метод propagator_block::send_message

При переопределении в производном классе этот метод синхронно передает сообщение из блока ISource этому объекту propagator_block. Вызывается методом send при вызове исходного блока.

Метод propagator_block::unlink_source

Удаляет связь указанного блока источника с данным объектом propagator_block.

Метод propagator_block::unlink_sources

Удаляет связи всех блоков источника с данным объектом propagator_block. (Переопределяет ITarget::unlink_sources.)

Заметки

Чтобы избежать множественное наследование, класс propagator_block класс наследуется от класса source_block и абстрактного класса ITarget. Большинство функциональных возможностей в классе target_block реплицируется здесь.

Иерархия наследования

ISource

ITarget

source_block

propagator_block

Требования

Заголовок: agents.h

Пространство имен: concurrency

См. также

Ссылки

Пространство имен concurrency

Класс source_block

Класс ITarget