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