Класс source_block
Класс source_block является абстрактным базовым классом для блоков, являющихся только источниками. Класс предоставляет основные функциональные возможности управления ссылками, а также распространенные проверки ошибок.
template<
class _TargetLinkRegistry,
class _MessageProcessorType = ordered_message_processor<typename _TargetLinkRegistry::type::type>
>
class source_block : public ISource<typename _TargetLinkRegistry::type::type>;
Параметры
_TargetLinkRegistry
Реестр ссылок для использования для хранения целевых ссылок._MessageProcessorType
Тип процессора для обработки сообщений.
Члены
Общедоступные Typedefs
Имя |
Описание |
---|---|
target_iterator |
Итератор для прохода подключенных целевых объектов. |
Открытые конструкторы
Имя |
Описание |
---|---|
Создает объект source_block. |
|
Уничтожает объект source_block. |
Открытые методы
Имя |
Описание |
---|---|
Принимает сообщение, предложенное этим объектом source_block, передавая владение вызывающему объекту. |
|
Получает значение счетчика ссылок на этот объект source_block, чтобы предотвратить удаление. |
|
Потребляет сообщение, ранее предложенное данным объектом source_block и успешно зарезервированное целевым объектом, передавая владение вызывающему объекту. |
|
Связывает целевой блок с этим объектом source_block. |
|
Освобождает предыдущее успешное резервирование сообщения. |
|
Освобождает значение счетчика ссылок на этот объект source_block. |
|
Резервирует сообщение, которое было ранее предложено этим объектом source_block. |
|
Удаляет связь целевого блока с этим объектом source_block. |
|
Удаляет связи всех целевых блоков с этим объектом source_block. (Переопределяет ISource::unlink_targets.) |
Защищенные методы
Имя |
Описание |
---|---|
При переопределении в производном классе, принимает сообщение, предложенное источником. Сообщений блоки должны переопределять этот метод для проверки _MsgId и возврата сообщения. |
|
Асинхронно ставит в очередь сообщения и запускает задачу распространения, если это не было сделано уже. |
|
При переопределении в производном классе получает сообщение, которое ранее было зарезервировано. |
|
Активирует пакетную обработку для этого блока. |
|
Инициализирует message_propagator внутри этого source_block. |
|
Обратный вызов, который уведомляет, что новая цель связана с этим объектом source_block. |
|
Обработка входного сообщения. Это полезно только для блоков распространения, которые являются производными от source_block |
|
Распространение сообщений в целевые объекты. |
|
При переопределении в производном классе распространяет данное сообщения для любой или всех связанных целевые объекты. Это основной способ распространения для блоков сообщений. |
|
При переопределении в производном классе освобождает предыдущее резервирование сообщения. |
|
Удаляет все целевые ссылки для этого исходного блока. Должен быть вызван из деструктора. |
|
При переопределении в производном классе резервирует сообщение, которое ранее было предложено данным объектом source_block. |
|
При переопределении в производном классе возобновляет распространение после выпуска резервирования. |
|
Синхронно ставит в очередь сообщения и запускает задачу распространения, если это не было сделано уже. |
|
Обратный вызов, который уведомляет, что цель отделена от этого объекта source_block. |
|
Ожидает завершения всех асинхронных операций распространения. Ожидание прокрутки определенного распространителя, используемое в деструкторах блоков сообщений, чтобы убедиться, что все асинхронные распространители имеют достаточно времени для окончания перед удалением блока. |
Заметки
Сообщений блоки должны быть производными от этого блока, чтобы воспользоваться преимуществами управление ссылками и синхронизации, предоставленные этим классом.
Иерархия наследования
source_block
Требования
Заголовок: agents.h
Пространство имен: concurrency