Класс call
Блок обмена сообщениями call
— это упорядоченный блок target_block
с несколькими источниками, который вызывает заданную функцию при получении сообщения.
Синтаксис
template<class T, class _FunctorType = std::function<void(T const&)>>
class call : public target_block<multi_link_registry<ISource<T>>>;
Параметры
T
Тип полезных данных сообщений, распространяемых в этот блок.
_FunctorType
Сигнатура функций, которые может принимать этот блок.
Участники
Открытые конструкторы
Имя | Описание |
---|---|
call | Перегружен. Создает блок обмена сообщениями call . |
~деструктор вызова | Уничтожает call блок обмена сообщениями. |
Защищенные методы
Имя | Описание |
---|---|
process_input_messages | Выполняет функцию вызова для входных сообщений. |
process_message | Обрабатывает сообщение, принятое этим call блоком обмена сообщениями. |
propagate_message | Асинхронно передает сообщение из ISource блока в этот call блок обмена сообщениями. Вызывается методом propagate при вызове исходного блока. |
send_message | Синхронно передает сообщение из ISource блока в этот call блок обмена сообщениями. Вызывается методом send при вызове исходного блока. |
supports_anonymous_source | Переопределяет метод supports_anonymous_source , чтобы указать, что данный блок может принимать сообщения, предоставляемые ему несвязанным источником. (Переопределения ITarget::supports_anonymous_source.) |
Замечания
Дополнительные сведения см. в разделе "Блоки асинхронных сообщений".
Иерархия наследования
call
Требования
Заголовок: agents.h
Пространство имен: concurrency
call
Создает блок обмена сообщениями call
.
call(
_Call_method const& _Func);
call(
_Call_method const& _Func,
filter_method const& _Filter);
call(
Scheduler& _PScheduler,
_Call_method const& _Func);
call(
Scheduler& _PScheduler,
_Call_method const& _Func,
filter_method const& _Filter);
call(
ScheduleGroup& _PScheduleGroup,
_Call_method const& _Func);
call(
ScheduleGroup& _PScheduleGroup,
_Call_method const& _Func,
filter_method const& _Filter);
Параметры
_Func
Функция, которая будет вызвана для каждого принятого сообщения.
_Фильтр
Функция фильтра, которая определяет, следует ли принимать предлагаемые сообщения.
_PScheduler
Объект Scheduler
, в котором запланирована задача распространения для блока обмена сообщениями call
.
_PScheduleGroup
Объект ScheduleGroup
, в котором запланирована задача распространения для блока обмена сообщениями call
. Используемый объект Scheduler
подразумевается группой расписаний.
Замечания
Среда выполнения использует планировщик по умолчанию, если вы не указали параметры _PScheduler
или _PScheduleGroup
.
Тип _Call_method
— это functor с подписью void (T const &)
, которая вызывается этим call
блоком обмена сообщениями для обработки сообщения.
Тип filter_method
— это functor с подписью bool (T const &)
, которая вызывается этим call
блоком обмена сообщениями, чтобы определить, следует ли принимать предлагаемое сообщение.
~звать
Уничтожает call
блок обмена сообщениями.
~call();
process_input_messages
Выполняет функцию вызова для входных сообщений.
virtual void process_input_messages(_Inout_ message<T>* _PMessage);
Параметры
_PMessage
Указатель на сообщение, которое нужно обрабатывать.
process_message
Обрабатывает сообщение, принятое этим call
блоком обмена сообщениями.
virtual void process_message(_Inout_ message<T>* _PMessage);
Параметры
_PMessage
Указатель на сообщение, которое нужно обрабатывать.
propagate_message
Асинхронно передает сообщение из ISource
блока в этот call
блок обмена сообщениями. Вызывается методом propagate
при вызове исходного блока.
virtual message_status propagate_message(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource);
Параметры
_PMessage
Указатель на объект message
.
_PSource
Указатель на исходный блок, предлагающий сообщение.
Возвращаемое значение
Message_status указание того, что целевой объект решил сделать с сообщением.
send_message
Синхронно передает сообщение из ISource
блока в этот call
блок обмена сообщениями. Вызывается методом send
при вызове исходного блока.
virtual message_status send_message(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource);
Параметры
_PMessage
Указатель на объект message
.
_PSource
Указатель на исходный блок, предлагающий сообщение.
Возвращаемое значение
Message_status указание того, что целевой объект решил сделать с сообщением.
supports_anonymous_source
Переопределяет метод supports_anonymous_source
, чтобы указать, что данный блок может принимать сообщения, предоставляемые ему несвязанным источником.
virtual bool supports_anonymous_source();
Возвращаемое значение
true
так как блок не откладывает предлагаемые сообщения.