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


Класс ITarget

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

Синтаксис

template<class T>
class ITarget;

Параметры

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

Участники

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

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

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

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

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

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

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

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

Замечания

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

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

ITarget

Требования

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

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

~ITarget

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

virtual ~ITarget();

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

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

Параметры

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

Замечания

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

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

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

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

Параметры

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

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

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

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

Замечания

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

отправить

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

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

Параметры

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

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

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

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

Замечания

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

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

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

supports_anonymous_source

При переопределении в производном классе возвращает значение 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;

См. также

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