Класс 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 | Ожидает завершения всех асинхронных распространений. |
Иерархия наследования
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
Группа расписаний, используемая для задач планирования.
link_source
Связывает указанный блок источника с этим 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();
unlink_source
Отменяет связь с указанным блоком источника из этого target_block
объекта.
virtual void unlink_source(_Inout_ ISource<_Source_type>* _PSource);
Параметры
_PSource
Указатель на ISource
блок, который должен быть отключен.
unlink_sources
Отменяет связь всех блоков источника из этого target_block
объекта.
virtual void unlink_sources();
wait_for_async_sends
Ожидает завершения всех асинхронных распространений.
void wait_for_async_sends();
Замечания
Этот метод используется деструкторами блоков сообщений, чтобы обеспечить время завершения всех асинхронных операций перед уничтожением блока.