Поделиться через


Класс 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.)

Замечания

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

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

ITarget

target_block

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 так как блок не откладывает предлагаемые сообщения.

См. также

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