Класс 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_identity
message
объект.
_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_identity
message
объект.
_PTarget
Указатель на целевой блок, вызывающий consume
метод.
Возвращаемое значение
Указатель на объект, на который вызывающий message
объект теперь имеет право владения.
Замечания
Метод consume
аналогичен accept
, но всегда должен предшествовать вызову reserve
возвращаемого true
.
~ISource
Уничтожает ISource
объект.
virtual ~ISource();
link_target
При переопределении в производном классе связывает целевой блок с этим 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_identity
message
объект.
_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_identity
message
объект.
_PTarget
Указатель на целевой блок, вызывающий reserve
метод.
Возвращаемое значение
true
Значение , если сообщение успешно зарезервировано, false
в противном случае. Резервирования могут завершаться неудачей по ряду причин, включая следующие: сообщение уже было зарезервировано или принято другим целевым объектом, источник может отклонять резервирования и т. п.
Замечания
После вызова reserve
, если оно выполнено успешно, необходимо вызвать либо consume
либо release
, чтобы принять или отказаться от владения сообщением соответственно.
unlink_target
При переопределении в производном классе отменяет связь целевого блока из этого ISource
блока, если он найден ранее.
virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;
Параметры
_PTarget
Указатель на целевой блок, не связываемый с этим ISource
блоком.
unlink_targets
При переопределении в производном классе отменяет связь всех целевых блоков из этого ISource
блока.
virtual void unlink_targets() = 0;