Класс transformertransformer Class

Блок обмена сообщениями transformer — это упорядоченный блок propagator_block с одной целью и несколькими источниками, который может принимать сообщения одного типа и хранить неограниченное число сообщений другого типа.A transformer messaging block is a single-target, multi-source, ordered propagator_block which can accept messages of one type and is capable of storing an unbounded number of messages of a different type.

СинтаксисSyntax

template<class _Input, class _Output>
class transformer : public propagator_block<single_link_registry<ITarget<_Output>>,
    multi_link_registry<ISource<_Input>>>;

ПараметрыParameters

_Input_Input
Тип полезных данных сообщений, принимаемых буфером.The payload type of the messages accepted by the buffer.

_Output_Output
Тип полезных данных сообщений, хранимых и распространяемых буфером.The payload type of the messages stored and propagated out by the buffer.

ЭлементыMembers

Открытые конструкторыPublic Constructors

nameName ОписаниеDescription
образовательtransformer Перегружен.Overloaded. Создает блок обмена сообщениями transformer .Constructs a transformer messaging block.
~ трансформатор деструктора~transformer Destructor Уничтожает transformer блок обмена сообщениями.Destroys the transformer messaging block.

Защищенные методыProtected Methods

ИмяName ОписаниеDescription
accept_messageaccept_message Принимает сообщение, которое было предложено этим transformer блоком обмена сообщениями, передавая владение вызывающему объекту.Accepts a message that was offered by this transformer messaging block, transferring ownership to the caller.
consume_messageconsume_message Использует сообщение, которое было ранее предложено transformer и зарезервировано целевым объектом, передавая владение вызывающему объекту.Consumes a message previously offered by the transformer and reserved by the target, transferring ownership to the caller.
link_target_notificationlink_target_notification Обратный вызов, уведомляющий о том, что новый целевой объект связан с этим transformer блоком обмена сообщениями.A callback that notifies that a new target has been linked to this transformer messaging block.
propagate_messagepropagate_message Асинхронно передает сообщение из ISource блока в этот transformer блок обмена сообщениями.Asynchronously passes a message from an ISource block to this transformer messaging block. Он вызывается propagate методом при вызове из исходного блока.It is invoked by the propagate method, when called by a source block.
propagate_to_any_targetspropagate_to_any_targets Выполняет функцию преобразователя для входящих сообщений.Executes the transformer function on the input messages.
release_messagerelease_message Освобождает предыдущее резервирование сообщения.Releases a previous message reservation. (Переопределяет source_block:: release_message.)(Overrides source_block::release_message.)
reserve_messagereserve_message Резервирует сообщение, которое было ранее предложено этим transformer блоком обмена сообщениями.Reserves a message previously offered by this transformer messaging block. (Переопределяет source_block:: reserve_message.)(Overrides source_block::reserve_message.)
resume_propagationresume_propagation Возобновляет распространение после освобождения резервирования.Resumes propagation after a reservation has been released. (Переопределяет source_block:: resume_propagation.)(Overrides source_block::resume_propagation.)
send_messagesend_message Синхронно передает сообщение из ISource блока в этот transformer блок обмена сообщениями.Synchronously passes a message from an ISource block to this transformer messaging block. Он вызывается send методом при вызове из исходного блока.It is invoked by the send method, when called by a source block.
supports_anonymous_sourcesupports_anonymous_source Переопределяет метод supports_anonymous_source, чтобы указать, что данный блок может принимать сообщения, предоставляемые ему несвязанным источником.Overrides the supports_anonymous_source method to indicate that this block can accept messages offered to it by a source that is not linked. (Переопределяет метод ITarget:: supports_anonymous_source.)(Overrides ITarget::supports_anonymous_source.)

КомментарииRemarks

Дополнительные сведения см. в разделе асинхронные блоки сообщений.For more information, see Asynchronous Message Blocks.

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

ISourceISource

ITargetITarget

source_blocksource_block

propagator_blockpropagator_block

transformer

ТребованияRequirements

Заголовок: agents.hHeader: agents.h

Пространство имен: параллелизмNamespace: concurrency

accept_messageaccept_message

Принимает сообщение, которое было предложено этим transformer блоком обмена сообщениями, передавая владение вызывающему объекту.Accepts a message that was offered by this transformer messaging block, transferring ownership to the caller.

virtual message<_Output>* accept_message(runtime_object_identity _MsgId);

ПараметрыParameters

_MsgId_MsgId
runtime_object_identityОбъект предлагаемого message объекта.The runtime_object_identity of the offered message object.

Возвращаемое значениеReturn Value

Указатель на message объект, владельцем которого стал вызывающий объект.A pointer to the message object that the caller now has ownership of.

consume_messageconsume_message

Использует сообщение, которое было ранее предложено transformer и зарезервировано целевым объектом, передавая владение вызывающему объекту.Consumes a message previously offered by the transformer and reserved by the target, transferring ownership to the caller.

virtual message<_Output>* consume_message(runtime_object_identity _MsgId);

ПараметрыParameters

_MsgId_MsgId
runtime_object_identityОбъект для используемого message объекта.The runtime_object_identity of the message object being consumed.

Возвращаемое значениеReturn Value

Указатель на message объект, владельцем которого стал вызывающий объект.A pointer to the message object that the caller now has ownership of.

КомментарииRemarks

Аналогично accept , но всегда предшествует вызову reserve .Similar to accept, but is always preceded by a call to reserve.

Обратный вызов, уведомляющий о том, что новый целевой объект связан с этим transformer блоком обмена сообщениями.A callback that notifies that a new target has been linked to this transformer messaging block.

virtual void link_target_notification(_Inout_ ITarget<_Output> *);

propagate_messagepropagate_message

Асинхронно передает сообщение из ISource блока в этот transformer блок обмена сообщениями.Asynchronously passes a message from an ISource block to this transformer messaging block. Он вызывается propagate методом при вызове из исходного блока.It is invoked by the propagate method, when called by a source block.

virtual message_status propagate_message(
    _Inout_ message<_Input>* _PMessage,
    _Inout_ ISource<_Input>* _PSource);

ПараметрыParameters

_PMessage_PMessage
Указатель на объект message.A pointer to the message object.

_PSource_PSource
Указатель на исходный блок, предлагающий сообщение.A pointer to the source block offering the message.

Возвращаемое значениеReturn Value

Message_status указывает, что цель решила делать с сообщением.A message_status indication of what the target decided to do with the message.

propagate_to_any_targetspropagate_to_any_targets

Выполняет функцию преобразователя для входящих сообщений.Executes the transformer function on the input messages.

virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);

release_messagerelease_message

Освобождает предыдущее резервирование сообщения.Releases a previous message reservation.

virtual void release_message(runtime_object_identity _MsgId);

ПараметрыParameters

_MsgId_MsgId
runtime_object_identity message Объект для освобожденного объекта.The runtime_object_identity of the message object being released.

reserve_messagereserve_message

Резервирует сообщение, которое было ранее предложено этим transformer блоком обмена сообщениями.Reserves a message previously offered by this transformer messaging block.

virtual bool reserve_message(runtime_object_identity _MsgId);

ПараметрыParameters

_MsgId_MsgId
runtime_object_identity message Объект для резервируемого объекта.The runtime_object_identity of the message object being reserved.

Возвращаемое значениеReturn Value

true значение, если сообщение было успешно зарезервировано, false в противном случае.true if the message was successfully reserved, false otherwise.

КомментарииRemarks

После reserve вызова метода, если он возвращает значение true , consume release метод или должен быть вызван, чтобы принять или освободить владение сообщением.After reserve is called, if it returns true, either consume or release must be called to either take or release ownership of the message.

resume_propagationresume_propagation

Возобновляет распространение после освобождения резервирования.Resumes propagation after a reservation has been released.

virtual void resume_propagation();

send_messagesend_message

Синхронно передает сообщение из ISource блока в этот transformer блок обмена сообщениями.Synchronously passes a message from an ISource block to this transformer messaging block. Он вызывается send методом при вызове из исходного блока.It is invoked by the send method, when called by a source block.

virtual message_status send_message(
    _Inout_ message<_Input>* _PMessage,
    _Inout_ ISource<_Input>* _PSource);

ПараметрыParameters

_PMessage_PMessage
Указатель на объект message.A pointer to the message object.

_PSource_PSource
Указатель на исходный блок, предлагающий сообщение.A pointer to the source block offering the message.

Возвращаемое значениеReturn Value

Message_status указывает, что цель решила делать с сообщением.A message_status indication of what the target decided to do with the message.

supports_anonymous_sourcesupports_anonymous_source

Переопределяет метод supports_anonymous_source, чтобы указать, что данный блок может принимать сообщения, предоставляемые ему несвязанным источником.Overrides the supports_anonymous_source method to indicate that this block can accept messages offered to it by a source that is not linked.

virtual bool supports_anonymous_source();

Возвращаемое значениеReturn Value

true так как блок не откладывает предлагаемые сообщения.true because the block does not postpone offered messages.

образовательtransformer

Создает блок обмена сообщениями transformer .Constructs a transformer messaging block.

transformer(
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget = NULL);

transformer(
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget,
    filter_method const& _Filter);

transformer(
    Scheduler& _PScheduler,
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget = NULL);

transformer(
    Scheduler& _PScheduler,
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget,
    filter_method const& _Filter);

transformer(
    ScheduleGroup& _PScheduleGroup,
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget = NULL);

transformer(
    ScheduleGroup& _PScheduleGroup,
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget,
    filter_method const& _Filter);

ПараметрыParameters

_Func_Func
Функция, которая будет вызываться для каждого принятого сообщения.A function that will be invoked for each accepted message.

_PTarget_PTarget
Указатель на целевой блок, связываемый с преобразователем.A pointer to a target block to link with the transformer.

_Filter_Filter
Функция фильтра, которая определяет, следует ли принимать предлагаемые сообщения.A filter function which determines whether offered messages should be accepted.

_PScheduler_PScheduler
Объект Scheduler , в котором запланирована задача распространения для блока обмена сообщениями transformer .The Scheduler object within which the propagation task for the transformer messaging block is scheduled.

_PScheduleGroup_PScheduleGroup
Объект ScheduleGroup , в котором запланирована задача распространения для блока обмена сообщениями transformer .The ScheduleGroup object within which the propagation task for the transformer messaging block is scheduled. Используемый объект Scheduler подразумевается группой расписаний.The Scheduler object used is implied by the schedule group.

КомментарииRemarks

Среда выполнения использует планировщик по умолчанию, если вы не указали параметры _PScheduler или _PScheduleGroup .The runtime uses the default scheduler if you do not specify the _PScheduler or _PScheduleGroup parameters.

Тип _Transform_method — это функтор с сигнатурой, _Output (_Input const &) которая вызывается этим transformer блоком обмена сообщениями для обработки сообщения.The type _Transform_method is a functor with signature _Output (_Input const &) which is invoked by this transformer messaging block to process a message.

Тип filter_method — это функтор с сигнатурой, bool (_Input const &) которая вызывается этим transformer блоком обмена сообщениями для определения того, следует ли принимать предложенное сообщение.The type filter_method is a functor with signature bool (_Input const &) which is invoked by this transformer messaging block to determine whether or not it should accept an offered message.

~ трансформатор~transformer

Уничтожает transformer блок обмена сообщениями.Destroys the transformer messaging block.

~transformer();

См. также разделSee also

Пространство имен Concurrencyconcurrency Namespace
Класс Callcall Class