Поделиться через


Класс ITarget

Класс ITarget является интерфейсом для всех целевых блоков. Целевые блоки потребляют сообщения, предлагаемые им блоками ISource.

Синтаксис

template<class T>
class ITarget;

Параметры

T
Тип данных пэйлоада в сообщениях, принятых целевым блоком.

Участники

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

Имя Описание
filter_method Сигнатура любого метода, используемого блоком, который возвращает bool значение для определения, следует ли принимать предлагаемое сообщение.
type Псевдоним типа для T.

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

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

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

Имя Описание
распространять При переопределении в производном классе асинхронно передает сообщение из исходного блока в этот целевой блок.
send При переопределении в производном классе синхронно передает сообщение целевому блоку.
поддерживает_анонимный_источник При переопределении в производном классе возвращает значение true или false в зависимости от того, принимает ли блок сообщений сообщения, предоставляемые не связанным с ним источником. Если возвращаемое значение переопределенного метода равно true, целевой объект не может отложить предлагаемое сообщение, поскольку для использования отложенного сообщения позднее требуется, чтобы источник был определен в реестре ссылок исходного объекта.

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

Имя Описание
link_source При переопределении в производном классе связывает указанный блок источника с этим ITarget блоком.
unlink_source Когда метод переопределён в производном классе, отменяет связь указанного исходного блока с этим ITarget блоком.
unlink_sources При переопределении в классе-потомке разрывает связь всех блоков источника с этим ITarget блоком.

Замечания

Дополнительные сведения см. в разделе "Блоки асинхронных сообщений".

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

ITarget

Требования

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

Пространство имен: конкурентность

~ITarget

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

virtual ~ITarget();

При переопределении в производном классе связывает указанный блок источника с этим ITarget блоком.

virtual void link_source(_Inout_ ISource<T>* _PSource) = 0;

Параметры

_PSource
Блок ISource, который связан с этим блоком ITarget.

Замечания

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

распространять

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

virtual message_status propagate(
    _Inout_opt_ message<T>* _PMessage,
    _Inout_opt_ ISource<T>* _PSource) = 0;

Параметры

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

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

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

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

Замечания

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

отправить

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

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

Параметры

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

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

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

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

Замечания

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

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

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

поддерживает_анонимный_источник

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

virtual bool supports_anonymous_source();

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

true если блок принимает сообщение из источника, не связанного с ним false в противном случае.

Когда метод переопределён в производном классе, отменяет связь указанного исходного блока с этим ITarget блоком.

virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;

Параметры

_PSource
Блок ISource , не связываемый с этим ITarget блоком.

Замечания

Эта функция не должна вызываться непосредственно в блоке ITarget . Блоки должны быть отключены с помощью методов unlink_target или unlink_targets на блоках ISource, что вызовет метод unlink_source на соответствующем целевом объекте.

При переопределении в классе-потомке разрывает связь всех блоков источника с этим ITarget блоком.

virtual void unlink_sources() = 0;

См. также

Пространство имен параллелизм
Класс ISource