ITarget 클래스

ITarget 클래스는 모든 대상 블록에 대한 인터페이스입니다. 대상 블록은 ISource 블록에서 제공한 메시지를 사용합니다.

구문

template<class T>
class ITarget;

매개 변수

T
대상 블록에서 허용하는 메시지 내에서 페이로드의 데이터 형식입니다.

멤버

공용 Typedefs

이름 설명
filter_method 제공된 메시지를 수락해야 하는지 여부를 결정하기 위해 값을 반환 bool 하는 블록에서 사용하는 메서드의 서명입니다.
type 에 대한 형식 별칭입니다 T.

공용 생성자

속성 설명
~ITarget 소멸자 개체를 ITarget 삭제합니다.

공용 메서드

이름 설명
전파 파생 클래스에서 재정의되는 경우 소스 블록의 메시지를 이 대상 블록으로 비동기적으로 전달합니다.
send 파생 클래스에서 재정의된 경우 메시지를 대상 블록에 동기적으로 전달합니다.
supports_anonymous_source 파생 클래스에서 재정의된 경우, 연결되지 않은 소스에서 제공하는 메시지를 메시지 블록이 수락할지 여부에 따라 true 또는 false를 반환합니다. 재정의된 메서드가 반환 true되면 나중에 연기된 메시지를 사용하려면 원본 링크 레지스트리에서 원본을 식별해야 하므로 대상은 제공된 메시지를 연기할 수 없습니다.

보호된 메서드

속성 설명
link_source 파생 클래스에서 재정의되는 경우 지정된 소스 블록을 이 ITarget 블록에 연결합니다.
unlink_source 파생 클래스에서 재정의된 경우 이 ITarget 블록에서 지정된 소스 블록의 연결을 해제합니다.
unlink_sources 파생 클래스에서 재정의되는 경우 이 ITarget 블록에서 모든 소스 블록의 연결을 해제합니다.

설명

자세한 내용은 비동기 메시지 블록을 참조 하세요.

상속 계층 구조

ITarget

요구 사항

헤더: agents.h

네임스페이스: 동시성

~ITarget

개체를 ITarget 삭제합니다.

virtual ~ITarget();

파생 클래스에서 재정의되는 경우 지정된 소스 블록을 이 ITarget 블록에 연결합니다.

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

매개 변수

_PSource
ISourceITarget 블록에 연결되는 블록입니다.

설명

이 함수는 블록에서 ITarget 직접 호출해서는 안 됩니다. 블록은 해당 대상에서 ISource 메서드를 link_target 호출하는 블록의 메서드를 link_source 사용하여 함께 연결되어야 합니다.

전파

파생 클래스에서 재정의되는 경우 소스 블록의 메시지를 이 대상 블록으로 비동기적으로 전달합니다.

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

매개 변수

_PMessage
message 개체에 대한 포인터입니다.

_PSource
메시지를 제공하는 소스 블록에 대한 포인터입니다.

Return Value

대상이 메시지로 무엇을 하기로 결정했는지에 대한 message_상태 표시입니다.

설명

메서드는 매개 변수가 있는 경우 invalid_argument 예외를 _PMessage throw합니다NULL._PSource

send

파생 클래스에서 재정의된 경우 메시지를 대상 블록에 동기적으로 전달합니다.

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

매개 변수

_PMessage
message 개체에 대한 포인터입니다.

_PSource
메시지를 제공하는 소스 블록에 대한 포인터입니다.

Return Value

대상이 메시지로 무엇을 하기로 결정했는지에 대한 message_상태 표시입니다.

설명

메서드는 매개 변수가 있는 경우 invalid_argument 예외를 _PMessage throw합니다NULL._PSource

send 메시지 시작 외부에서 메서드를 사용하고 네트워크 내에서 메시지를 전파하는 것은 위험하며 교착 상태가 발생할 수 있습니다.

반환될 때 send 메시지는 이미 수락되어 대상 블록으로 전송되었거나 대상에 의해 거부되었습니다.

supports_anonymous_source

파생 클래스에서 재정의된 경우, 연결되지 않은 소스에서 제공하는 메시지를 메시지 블록이 수락할지 여부에 따라 true 또는 false를 반환합니다. 재정의된 메서드가 반환 true되는 경우 대상은 제공된 메시지를 연기할 수 없습니다. 나중에 연기된 메시지를 사용하려면 소스가 해당 sourse 링크 레지스트리에서 식별되어야 하므로 대상은 제공된 메시지를 연기할 수 없습니다.

virtual bool supports_anonymous_source();

Return Value

true 블록이 연결되지 않은 원본의 메시지를 수락할 수 있으면 이고, 그렇지 않으면 해당 블록에 연결되지 않은 원본에서 메시지를 수락할 false 수 있습니다.

파생 클래스에서 재정의된 경우 이 ITarget 블록에서 지정된 소스 블록의 연결을 해제합니다.

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

매개 변수

_PSource
ISourceITarget 블록에서 연결 해제되는 블록입니다.

설명

이 함수는 블록에서 ITarget 직접 호출해서는 안 됩니다. 블록 또는 unlink_targets 해당 대상에서 ISource 메서드를 unlink_target 호출하는 블록의 메서드를 사용하여 블록의 unlink_source 연결을 끊어야 합니다.

파생 클래스에서 재정의되는 경우 이 ITarget 블록에서 모든 소스 블록의 연결을 해제합니다.

virtual void unlink_sources() = 0;

참고 항목

concurrency 네임스페이스
ISource 클래스