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