Класс target_block

Класс target_block — это абстрактный базовый класс, который предоставляет основные функции управления соединениями и проверку ошибок только для целевых блоков.

Синтаксис

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

Параметры

_SourceLinkRegistry
Реестр ссылок, используемый для хранения исходных ссылок.

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

Участники

Общедоступные определения типов

Имя Описание
source_iterator Тип итератора для source_link_manager этого target_block объекта.

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

Имя Описание
target_block Формирует объект target_block.
Деструктор ~target_block Уничтожает target_block объект.

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

Имя Описание
Распространения Асинхронно передает сообщение из исходного блока в этот целевой блок.
send Синхронно передает сообщение из исходного блока в этот целевой блок.

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

Имя Описание
async_send Асинхронно отправляет сообщение для обработки.
decline_incoming_messages Указывает на блок, который должны быть отклонены новые сообщения.
enable_batched_processing Активирует пакетную обработку для этого блока.
initialize_target Инициализирует базовый объект. В частности, message_processor объект необходимо инициализировать.
link_source Связывает указанный блок источника с этим target_block объектом.
process_input_messages Обрабатывает сообщения, полученные как входные данные.
process_message При переопределении в производном классе обрабатывает сообщение, которое ранее было принято данным объектом target_block.
propagate_message При переопределении в производном классе этот метод асинхронно передает сообщение из блока этому target_block объектуISource. Вызывается методом propagate при вызове исходного блока.
register_filter Регистрирует метод фильтра, который будет вызываться для каждого полученного сообщения.
remove_sources Отменяет связь со всеми источниками после ожидания выполнения невыполненных асинхронных операций отправки.
send_message При переопределении в производном классе этот метод синхронно передает сообщение из ISource блока этому target_block объекту. Вызывается методом send при вызове исходного блока.
sync_send Синхронно отправляет сообщение для обработки.
unlink_source Отменяет связь с указанным блоком источника из этого target_block объекта.
unlink_sources Отменяет связь всех блоков источника из этого target_block объекта. (Переопределения ITarget::unlink_sources.)
wait_for_async_sends Ожидает завершения всех асинхронных распространений.

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

ITarget

target_block

Требования

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

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

async_send

Асинхронно отправляет сообщение для обработки.

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

Параметры

_PMessage
Указатель на отправленное сообщение.

decline_incoming_messages

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

void decline_incoming_messages();

Замечания

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

enable_batched_processing

Активирует пакетную обработку для этого блока.

void enable_batched_processing();

initialize_target

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

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

Параметры

_PScheduler
Планировщик, используемый для планирования задач.

_PScheduleGroup
Группа расписаний, используемая для задач планирования.

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

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

Параметры

_PSource
Указатель на блок, связанный ISource .

Замечания

Эта функция не должна вызываться непосредственно в объекте target_block . Блоки должны быть соединены вместе с помощью link_target метода в ISource блоках, который вызовет link_source метод в соответствующем целевом объекте.

process_input_messages

Обрабатывает сообщения, полученные как входные данные.

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

Параметры

_PMessage
Указатель на сообщение, которое необходимо обработать.

process_message

При переопределении в производном классе обрабатывает сообщение, которое ранее было принято данным объектом target_block.

virtual void process_message(message<_Source_type> *);

Распространения

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

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

Параметры

_PMessage
Указатель на объект message.

_PSource
Указатель на исходный блок, предлагающий сообщение.

Возвращаемое значение

Message_status указание того, что целевой объект решил сделать с сообщением.

Замечания

Метод создает исключение invalid_argument, если _PMessage имеет значение NULLили _PSource параметр.

propagate_message

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

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

Параметры

_PMessage
Указатель на объект message.

_PSource
Указатель на исходный блок, предлагающий сообщение.

Возвращаемое значение

Message_status указание того, что целевой объект решил сделать с сообщением.

register_filter

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

void register_filter(filter_method const& _Filter);

Параметры

_Фильтр
Метод фильтра.

remove_sources

Отменяет связь со всеми источниками после ожидания выполнения невыполненных асинхронных операций отправки.

void remove_sources();

Замечания

Все целевые блоки должны вызывать эту подпрограмму, чтобы удалить источники в деструкторе.

отправить

Синхронно передает сообщение из исходного блока в этот целевой блок.

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

Параметры

_PMessage
Указатель на объект message.

_PSource
Указатель на исходный блок, предлагающий сообщение.

Возвращаемое значение

Message_status указание того, что целевой объект решил сделать с сообщением.

Замечания

Метод создает исключение invalid_argument, если _PMessage имеет значение NULLили _PSource параметр.

send Использование метода вне запуска сообщений и распространения сообщений в сети опасно и может привести к взаимоблокировке.

При send возврате сообщение либо было принято, либо передано в целевой блок, либо оно было отклонено целевым объектом.

send_message

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

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

Возвращаемое значение

Message_status указание того, что целевой объект решил сделать с сообщением.

Замечания

По умолчанию этот блок возвращается, если не переопределяется declined производным классом.

sync_send

Синхронно отправляет сообщение для обработки.

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

Параметры

_PMessage
Указатель на отправленное сообщение.

target_block

Формирует объект target_block.

target_block();

~target_block

Уничтожает target_block объект.

virtual ~target_block();

Отменяет связь с указанным блоком источника из этого target_block объекта.

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

Параметры

_PSource
Указатель на ISource блок, который должен быть отключен.

Отменяет связь всех блоков источника из этого target_block объекта.

virtual void unlink_sources();

wait_for_async_sends

Ожидает завершения всех асинхронных распространений.

void wait_for_async_sends();

Замечания

Этот метод используется деструкторами блоков сообщений, чтобы обеспечить время завершения всех асинхронных операций перед уничтожением блока.

См. также

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