Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Класс 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();
Замечания
Этот метод используется деструкторами блоков сообщений, чтобы обеспечить время завершения всех асинхронных операций перед уничтожением блока.