ITarget 클래스ITarget Class

ITarget 클래스는 모든 대상 블록에 대한 인터페이스입니다.The ITarget class is the interface for all target blocks. 대상 블록은 ISource 블록에서 제공한 메시지를 사용합니다.Target blocks consume messages offered to them by ISource blocks.

구문Syntax

template<class T>
class ITarget;

매개 변수Parameters

TT
대상 블록에서 허용 하는 메시지 내 페이로드의 데이터 형식입니다.The data type of the payload within the messages accepted by the target block.

멤버Members

공용 TypedefsPublic Typedefs

NameName 설명Description
filter_method bool 제공 된 메시지를 수락 해야 하는지 여부를 결정 하는 값을 반환 하는 블록에서 사용 하는 메서드의 서명입니다.The signature of any method used by the block that returns a bool value to determine whether an offered message should be accepted.
type 에 대 한 형식 별칭 T 입니다.A type alias for T.

Public 생성자Public Constructors

NameName 설명Description
~ ITarget 소멸자~ITarget Destructor 개체를 소멸 시킵니다 ITarget .Destroys the ITarget object.

Public 메서드Public Methods

이름Name 설명Description
배포할propagate 파생 클래스에서 재정의 되는 경우 소스 블록에서이 대상 블록으로 메시지를 비동기적으로 전달 합니다.When overridden in a derived class, asynchronously passes a message from a source block to this target block.
sendsend 파생 클래스에서 재정의 되는 경우 메시지를 대상 블록에 동기적으로 전달 합니다.When overridden in a derived class, synchronously passes a message to the target block.
supports_anonymous_sourcesupports_anonymous_source 파생 클래스에서 재정의된 경우, 연결되지 않은 소스에서 제공하는 메시지를 메시지 블록이 수락할지 여부에 따라 true 또는 false를 반환합니다.When overridden in a derived class, returns true or false depending on whether the message block accepts messages offered by a source that is not linked to it. 재정의 된 메서드가을 반환 하는 경우 나중에 연기 된 메시지를 사용 하려면 소스 true 링크 레지스트리에서 소스가 식별 되어야 하므로 대상이 제공 된 메시지를 연기할 수 없습니다.If the overridden method returns true, the target cannot postpone an offered message, as consumption of a postponed message at a later time requires the source to be identified in its source link registry.

Protected 메서드Protected Methods

NameName 설명Description
link_sourcelink_source 파생 클래스에서 재정의 되는 경우 지정 된 소스 블록을이 블록에 연결 ITarget 합니다.When overridden in a derived class, links a specified source block to this ITarget block.
unlink_sourceunlink_source 파생 클래스에서 재정의 되는 경우이 블록에서 지정 된 소스 블록을 해제 ITarget 합니다.When overridden in a derived class, unlinks a specified source block from this ITarget block.
unlink_sourcesunlink_sources 파생 클래스에서 재정의 되는 경우이 블록에서 모든 소스 블록을 해제 ITarget 합니다.When overridden in a derived class, unlinks all source blocks from this ITarget block.

설명Remarks

자세한 내용은 비동기 메시지 블록을 참조 하세요.For more information, see Asynchronous Message Blocks.

상속 계층 구조Inheritance Hierarchy

ITarget

요구 사항Requirements

헤더: agents.hHeader: agents.h

네임 스페이스: 동시성Namespace: concurrency

~ ITarget~ITarget

개체를 소멸 시킵니다 ITarget .Destroys the ITarget object.

virtual ~ITarget();

파생 클래스에서 재정의 되는 경우 지정 된 소스 블록을이 블록에 연결 ITarget 합니다.When overridden in a derived class, links a specified source block to this ITarget block.

virtual void link_source(_Inout_ ISource<T>* _PSource) = 0;

매개 변수Parameters

_PSource_PSource
ISource이 블록에 연결 되는 블록 ITarget 입니다.The ISource block being linked to this ITarget block.

설명Remarks

이 함수는 블록에서 직접 호출 하면 안 됩니다 ITarget .This function should not be called directly on an ITarget block. 블록에서 메서드를 사용 하 여 블록을 함께 연결 해야 합니다 link_target ISource . 그러면 link_source 해당 대상에서 메서드를 호출 합니다.Blocks should be connected together using the link_target method on ISource blocks, which will invoke the link_source method on the corresponding target.

배포할propagate

파생 클래스에서 재정의 되는 경우 소스 블록에서이 대상 블록으로 메시지를 비동기적으로 전달 합니다.When overridden in a derived class, asynchronously passes a message from a source block to this target block.

virtual message_status propagate(
    _Inout_opt_ message<T>* _PMessage,
    _Inout_opt_ ISource<T>* _PSource) = 0;

매개 변수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.

설명Remarks

메서드는 invalid_argument _PMessage 또는 _PSource 매개 변수가 인 경우 invalid_argument 예외를 throw 합니다 NULL .The method throws an invalid_argument exception if either the _PMessage or _PSource parameter is NULL.

보내기send

파생 클래스에서 재정의 되는 경우 메시지를 대상 블록에 동기적으로 전달 합니다.When overridden in a derived class, synchronously passes a message to the target block.

virtual message_status send(
    _Inout_ message<T>* _PMessage,
    _Inout_ ISource<T>* _PSource) = 0;

매개 변수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.

설명Remarks

메서드는 invalid_argument _PMessage 또는 _PSource 매개 변수가 인 경우 invalid_argument 예외를 throw 합니다 NULL .The method throws an invalid_argument exception if either the _PMessage or _PSource parameter is NULL.

send메시지 시작 외부에서 메서드를 사용 하 고 네트워크 내의 메시지를 전파 하는 것은 위험 하며 교착 상태가 발생할 수 있습니다.Using the send method outside of message initiation and to propagate messages within a network is dangerous and can lead to deadlock.

send 반환 되 면 메시지가 이미 수락 되었고 대상 블록으로 전송 되었거나 대상에 의해 거부 된 것입니다.When send returns, the message has either already been accepted, and transferred into the target block, or it has been declined by the target.

supports_anonymous_sourcesupports_anonymous_source

파생 클래스에서 재정의된 경우, 연결되지 않은 소스에서 제공하는 메시지를 메시지 블록이 수락할지 여부에 따라 true 또는 false를 반환합니다.When overridden in a derived class, returns true or false depending on whether the message block accepts messages offered by a source that is not linked to it. 재정의 된 메서드가을 반환 하는 경우 true 나중에 연기 된 메시지를 사용 하려면 소스를 해당 소스 link 레지스트리에서 확인 해야 합니다.If the overridden method returns true, the target cannot postpone an offered message, as consumption of a postponed message at a later time requires the source to be identified in its sourse link registry.

virtual bool supports_anonymous_source();

Return ValueReturn Value

true 블록에 연결 되지 않은 소스에서 메시지를 수락할 수 있으면이 고 false , 그렇지 않으면입니다.true if the block can accept message from a source that is not linked to it false otherwise.

파생 클래스에서 재정의 되는 경우이 블록에서 지정 된 소스 블록을 해제 ITarget 합니다.When overridden in a derived class, unlinks a specified source block from this ITarget block.

virtual void unlink_source(_Inout_ ISource<T>* _PSource) = 0;

매개 변수Parameters

_PSource_PSource
ISource이 블록에서 연결이 해제 되는 블록 ITarget 입니다.The ISource block being unlinked from this ITarget block.

설명Remarks

이 함수는 블록에서 직접 호출 하면 안 됩니다 ITarget .This function should not be called directly on an ITarget block. 블록의 또는 메서드를 사용 하 여 블록의 연결을 해제 해야 합니다 unlink_target unlink_targets ISource unlink_source . 그러면 해당 대상에서 메서드를 호출 합니다.Blocks should be disconnected using the unlink_target or unlink_targets methods on ISource blocks, which will invoke the unlink_source method on the corresponding target.

파생 클래스에서 재정의 되는 경우이 블록에서 모든 소스 블록을 해제 ITarget 합니다.When overridden in a derived class, unlinks all source blocks from this ITarget block.

virtual void unlink_sources() = 0;

참고 항목See also

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