ISource 클래스
ISource
클래스는 모든 소스 블록에 대한 인터페이스입니다. 소스 블록은 ITarget
블록에 메시지를 전파합니다.
구문
template<class T>
class ISource;
매개 변수
T
원본 블록에서 생성된 메시지 내 페이로드의 데이터 형식입니다.
멤버
공용 Typedefs
속성 | 설명 |
---|---|
source_type |
에 대한 형식 별칭입니다 T . |
공용 생성자
속성 | 설명 |
---|---|
~ISource 소멸자 | 개체를 ISource 삭제합니다. |
공용 메서드
이름 | 설명 |
---|---|
받아들이다 | 파생 클래스에서 재정의된 경우 이 ISource 블록에서 제공한 메시지를 수락하여 소유권을 호출자에게 전송합니다. |
acquire_ref | 파생 클래스에서 재정의되는 경우 이 블록에 대한 ISource 참조 횟수를 획득하여 삭제를 방지합니다. |
소비하다 | 파생 클래스에서 재정의된 경우 이전에 이 ISource 블록에서 제공한 메시지를 사용하고 대상에서 성공적으로 예약하여 소유권을 호출자에게 전송합니다. |
link_target | 파생 클래스에서 재정의되는 경우 대상 블록을 이 ISource 블록에 연결합니다. |
release | 파생 클래스에서 재정의된 경우 이전에 성공한 메시지 예약을 해제합니다. |
release_ref | 파생 클래스에서 재정의되는 경우 이 ISource 블록에 대한 참조 횟수를 해제합니다. |
reserve | 파생 클래스에서 재정의된 경우 이 ISource 블록에서 이전에 제공한 메시지를 예약합니다. |
unlink_target | 파생 클래스에서 재정의된 경우 이전에 연결된 것으로 확인된 경우 이 ISource 블록에서 대상 블록의 연결을 해제합니다. |
unlink_targets | 파생 클래스에서 재정의되는 경우 이 ISource 블록에서 모든 대상 블록의 연결을 해제합니다. |
설명
자세한 내용은 비동기 메시지 블록을 참조 하세요.
상속 계층 구조
ISource
요구 사항
헤더: agents.h
네임스페이스: 동시성
동의
파생 클래스에서 재정의된 경우 이 ISource
블록에서 제공한 메시지를 수락하여 소유권을 호출자에게 전송합니다.
virtual message<T>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
매개 변수
_MsgId
runtime_object_identity
제공 message
된 개체의 개체입니다.
_PTarget
메서드를 호출하는 대상 블록에 대한 accept
포인터입니다.
Return Value
이제 호출자의 소유권이 있는 메시지에 대한 포인터입니다.
설명
이 accept
ISource
블록에서 메시지를 제공하는 동안 대상에서 메서드를 호출합니다. 반환된 메시지 포인터는 이 소스가 메시지의 복사본을 만들기로 propagate
결정하는 경우 블록의 ITarget
메서드에 전달된 것과 다를 수 있습니다.
acquire_ref
파생 클래스에서 재정의되는 경우 이 블록에 대한 ISource
참조 횟수를 획득하여 삭제를 방지합니다.
virtual void acquire_ref(_Inout_ ITarget<T>* _PTarget) = 0;
매개 변수
_PTarget
이 메서드를 호출하는 대상 블록에 대한 포인터입니다.
설명
이 메서드는 메서드 중에 link_target
이 원본에 연결된 개체에 의해 ITarget
호출됩니다.
소비
파생 클래스에서 재정의된 경우 이전에 이 ISource
블록에서 제공한 메시지를 사용하고 대상에서 성공적으로 예약하여 소유권을 호출자에게 전송합니다.
virtual message<T>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
매개 변수
_MsgId
runtime_object_identity
예약된 message
개체의 개체입니다.
_PTarget
메서드를 호출하는 대상 블록에 대한 consume
포인터입니다.
Return Value
호출자의 소유권이 message
있는 개체에 대한 포인터입니다.
설명
메서드 consume
는 유사accept
하지만 항상 반환true
된 메서드에 대한 reserve
호출 앞에 있어야 합니다.
~ISource
개체를 ISource
삭제합니다.
virtual ~ISource();
link_target
파생 클래스에서 재정의되는 경우 대상 블록을 이 ISource
블록에 연결합니다.
virtual void link_target(_Inout_ ITarget<T>* _PTarget) = 0;
매개 변수
_PTarget
이 ISource
블록에 연결되는 대상 블록에 대한 포인터입니다.
릴리스
파생 클래스에서 재정의된 경우 이전에 성공한 메시지 예약을 해제합니다.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
매개 변수
_MsgId
runtime_object_identity
예약된 message
개체의 개체입니다.
_PTarget
메서드를 호출하는 대상 블록에 대한 release
포인터입니다.
release_ref
파생 클래스에서 재정의되는 경우 이 ISource
블록에 대한 참조 횟수를 해제합니다.
virtual void release_ref(_Inout_ ITarget<T>* _PTarget) = 0;
매개 변수
_PTarget
이 메서드를 호출하는 대상 블록에 대한 포인터입니다.
설명
이 메서드는 이 소스에서 연결되지 않은 개체에 의해 ITarget
호출됩니다. 원본 블록은 대상 블록에 예약된 모든 리소스를 해제할 수 있습니다.
reserve
파생 클래스에서 재정의된 경우 이 ISource
블록에서 이전에 제공한 메시지를 예약합니다.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<T>* _PTarget) = 0;
매개 변수
_MsgId
runtime_object_identity
제공 message
된 개체의 개체입니다.
_PTarget
메서드를 호출하는 대상 블록에 대한 reserve
포인터입니다.
Return Value
true
메시지가 성공적으로 예약 false
되었으면 그렇지 않습니다. 예약은 메시지를 이미 다른 대상이 예약했거나 수락한 경우, 소스에서 예약을 거부한 경우 등과 같은 다양한 이유로 실패할 수 있습니다.
설명
호출reserve
한 후 성공하는 경우 메시지의 소유를 각각 취하거나 release
포기하기 위해 호출 consume
해야 합니다.
unlink_target
파생 클래스에서 재정의된 경우 이전에 연결된 것으로 확인된 경우 이 ISource
블록에서 대상 블록의 연결을 해제합니다.
virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;
매개 변수
_PTarget
이 ISource
블록에서 연결이 해제되는 대상 블록에 대한 포인터입니다.
unlink_targets
파생 클래스에서 재정의되는 경우 이 ISource
블록에서 모든 대상 블록의 연결을 해제합니다.
virtual void unlink_targets() = 0;