Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Блок обмена сообщениями 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, чтобы указать, что данный блок может принимать сообщения, предоставляемые ему несвязанным источником. (Переопределяет ITarget::supports_anonymous_source.) |
Замечания
Дополнительные сведения см. в разделе "Блоки асинхронных сообщений".
Иерархия наследования
call
Требования
Заголовок: agents.h
Пространство имен: конкурентность
вызов
Создает блок обмена сообщениями 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();
обработка_входящих_сообщений
Выполняет функцию вызова для входных сообщений.
virtual void process_input_messages(_Inout_ message<T>* _PMessage);
Параметры
_PMessage
Указатель на сообщение, которое нужно обрабатывать.
обработать_сообщение
Обрабатывает сообщение, принятое этим call блоком обмена сообщениями.
virtual void process_message(_Inout_ message<T>* _PMessage);
Параметры
_PMessage
Указатель на сообщение, которое нужно обрабатывать.
передать_сообщение
Асинхронно передает сообщение из ISource блока в этот call блок обмена сообщениями. Вызывается методом propagate при вызове исходного блока.
virtual message_status propagate_message(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource);
Параметры
_PMessage
Указатель на объект message.
_PSource
Указатель на исходный блок, предлагающий сообщение.
Возвращаемое значение
Указание состояния сообщения о том, что целевой объект решил сделать с сообщением.
отправить_сообщение
Синхронно передает сообщение из ISource блока в этот call блок обмена сообщениями. Вызывается методом send при вызове исходного блока.
virtual message_status send_message(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource);
Параметры
_PMessage
Указатель на объект message.
_PSource
Указатель на исходный блок, предлагающий сообщение.
Возвращаемое значение
Указание состояния сообщения о том, что целевой объект решил сделать с сообщением.
поддерживает_анонимный_источник
Переопределяет метод supports_anonymous_source, чтобы указать, что данный блок может принимать сообщения, предоставляемые ему несвязанным источником.
virtual bool supports_anonymous_source();
Возвращаемое значение
true так как блок не откладывает предлагаемые сообщения.