Класс ISource

Класс ISource является интерфейсом для всех блоков источников. Блоки источников распространяют сообщения в блоки ITarget.

Синтаксис

template<class T>
class ISource;

Параметры

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

Участники

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

Имя Описание
source_type Псевдоним типа для T.

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

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

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

Имя Описание
Принять При переопределении в производном классе принимает сообщение, которое было предложено этим ISource блоком, передавая владение вызывающему объекту.
acquire_ref При переопределении в производном классе получает количество ссылок в этом ISource блоке, чтобы предотвратить удаление.
consume При переопределении в производном классе использует сообщение, ранее предлагаемое этим ISource блоком, и успешно зарезервировано целевым объектом, передавая владение вызывающему объекту.
link_target При переопределении в производном классе связывает целевой блок с этим ISource блоком.
release При переопределении в производном классе освобождает предыдущее успешное резервирование сообщений.
release_ref При переопределении в производном классе освобождает количество ссылок в этом ISource блоке.
reserve При переопределении в производном классе резервирует сообщение, ранее предлагаемое этим ISource блоком.
unlink_target При переопределении в производном классе отменяет связь целевого блока из этого ISource блока, если он найден ранее.
unlink_targets При переопределении в производном классе отменяет связь всех целевых блоков из этого ISource блока.

Замечания

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

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

ISource

Требования

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

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

accept

При переопределении в производном классе принимает сообщение, которое было предложено этим ISource блоком, передавая владение вызывающему объекту.

virtual message<T>* accept(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Параметры

_MsgId
Предлагаемый runtime_object_identitymessage объект.

_PTarget
Указатель на целевой блок, вызывающий accept метод.

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

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

Замечания

Метод accept вызывается целевым объектом во время предложения сообщения этим ISource блоком. Возвращаемый указатель сообщения может отличаться от propagate переданного в метод ITarget блока, если этот источник решит сделать копию сообщения.

acquire_ref

При переопределении в производном классе получает количество ссылок в этом ISource блоке, чтобы предотвратить удаление.

virtual void acquire_ref(_Inout_ ITarget<T>* _PTarget) = 0;

Параметры

_PTarget
Указатель на целевой блок, вызывающий этот метод.

Замечания

Этот метод вызывается ITarget объектом, связанным с этим источником во время link_target метода.

использовать

При переопределении в производном классе использует сообщение, ранее предлагаемое этим ISource блоком, и успешно зарезервировано целевым объектом, передавая владение вызывающему объекту.

virtual message<T>* consume(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Параметры

_MsgId
Зарезервированный runtime_object_identitymessage объект.

_PTarget
Указатель на целевой блок, вызывающий consume метод.

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

Указатель на объект, на который вызывающий message объект теперь имеет право владения.

Замечания

Метод consume аналогичен accept, но всегда должен предшествовать вызову reserve возвращаемого true.

~ISource

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

virtual ~ISource();

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

virtual void link_target(_Inout_ ITarget<T>* _PTarget) = 0;

Параметры

_PTarget
Указатель на целевой блок, связанный с этим ISource блоком.

выпуска

При переопределении в производном классе освобождает предыдущее успешное резервирование сообщений.

virtual void release(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Параметры

_MsgId
Зарезервированный runtime_object_identitymessage объект.

_PTarget
Указатель на целевой блок, вызывающий release метод.

release_ref

При переопределении в производном классе освобождает количество ссылок в этом ISource блоке.

virtual void release_ref(_Inout_ ITarget<T>* _PTarget) = 0;

Параметры

_PTarget
Указатель на целевой блок, вызывающий этот метод.

Замечания

Этот метод вызывается ITarget объектом, который не связан с этим источником. Исходный блок может освободить все ресурсы, зарезервированные для целевого блока.

резерв

При переопределении в производном классе резервирует сообщение, ранее предлагаемое этим ISource блоком.

virtual bool reserve(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Параметры

_MsgId
Предлагаемый runtime_object_identitymessage объект.

_PTarget
Указатель на целевой блок, вызывающий reserve метод.

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

true Значение , если сообщение успешно зарезервировано, false в противном случае. Резервирования могут завершаться неудачей по ряду причин, включая следующие: сообщение уже было зарезервировано или принято другим целевым объектом, источник может отклонять резервирования и т. п.

Замечания

После вызова reserve, если оно выполнено успешно, необходимо вызвать либо consume либо release , чтобы принять или отказаться от владения сообщением соответственно.

При переопределении в производном классе отменяет связь целевого блока из этого ISource блока, если он найден ранее.

virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;

Параметры

_PTarget
Указатель на целевой блок, не связываемый с этим ISource блоком.

При переопределении в производном классе отменяет связь всех целевых блоков из этого ISource блока.

virtual void unlink_targets() = 0;

См. также

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