Класс 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();
link_source
При переопределении в производном классе связывает указанный блок источника с этим 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
в противном случае.
unlink_source
При переопределении в производном классе отменяет связь указанного исходного блока из этого ITarget
блока.
virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;
Параметры
_PSource
Блок ISource
, не связываемый с этим ITarget
блоком.
Замечания
Эта функция не должна вызываться непосредственно в блоке ITarget
. Блоки должны быть отключены с помощью unlink_target
блоков или unlink_targets
методов ISource
, которые будут вызывать unlink_source
метод на соответствующем целевом объекте.
unlink_sources
При переопределении в производном классе отменяет связь всех блоков источника из этого ITarget
блока.
virtual void unlink_sources() = 0;