transformer 클래스transformer 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 생성자Public Constructors

이름Name 설명Description
transformer 오버로드되었습니다.Overloaded. transformer 메시징 블록을 생성합니다.Constructs a transformer messaging block.
~ 변환기 소멸자~transformer Destructor 메시징 블록을 소멸 시킵니다 transformer .Destroys the transformer messaging block.

Protected 메서드Protected Methods

NameName 설명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 ValueReturn 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 ValueReturn 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 ValueReturn 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 ValueReturn 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 ValueReturn 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 ValueReturn 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

concurrency 네임 스페이스concurrency Namespace
call 클래스call Class