propagator_block 클래스
propagator_block
클래스는 소스인 동시에 대상인 메시지 블록에 대한 추상 기본 클래스입니다. source_block
및 target_block
클래스의 기능을 결합합니다.
구문
template<class _TargetLinkRegistry, class _SourceLinkRegistry, class _MessageProcessorType = ordered_message_processor<typename _TargetLinkRegistry::type::type>>
class propagator_block : public source_block<_TargetLinkRegistry,
_MessageProcessorType>,
public ITarget<typename _SourceLinkRegistry::type::source_type>;
매개 변수
_TargetLinkRegistry
대상 링크를 보유하는 데 사용할 링크 레지스트리입니다.
_SourceLinkRegistry
원본 링크를 보유하는 데 사용할 링크 레지스트리입니다.
_MessageProcessorType
메시지 처리를 위한 프로세서 유형입니다.
멤버
공용 Typedefs
속성 | 설명 |
---|---|
source_iterator |
이에 propagator_block 대한 source_link_manager 반복기의 형식입니다. |
공용 생성자
속성 | 설명 |
---|---|
propagator_block | propagator_block 개체를 생성합니다. |
~propagator_block 소멸자 | propagator_block 개체를 제거합니다. |
공용 메서드
이름 | 설명 |
---|---|
전파 | 소스 블록에서 이 대상 블록으로 메시지를 비동기적으로 전달합니다. |
send | 이 블록에 대한 메시지를 동기적으로 시작합니다. 블록에서 호출합니다 ISource . 이 함수가 완료되면 메시지가 이미 블록으로 전파됩니다. |
보호된 메서드
속성 | 설명 |
---|---|
decline_incoming_messages | 블록에 새 메시지를 거부해야 했음을 나타냅니다. |
initialize_source_and_target | 기본 개체를 초기화합니다. 특히 개체를 message_processor 초기화해야 합니다. |
link_source | 지정된 소스 블록을 이 propagator_block 개체에 연결합니다. |
process_input_messages | 입력된 메시지를 처리합니다. 이는 source_block 파생되는 전파자 블록에만 유용합니다(source_block::p rocess_input_messages 재정의). |
propagate_message | 파생 클래스에서 재정의된 경우 이 메서드는 블록에서 ISource 이 propagator_block 개체로 메시지를 비동기적으로 전달합니다. 소스 블록에서 호출할 propagate 때 메서드에 의해 호출됩니다. |
register_filter | 받은 모든 메시지에서 호출될 필터 메서드를 등록합니다. |
remove_network_links | 이 propagator_block 개체에서 모든 원본 및 대상 네트워크 링크를 제거합니다. |
send_message | 파생 클래스에서 재정의된 경우 이 메서드는 블록에서 ISource 이 propagator_block 개체로 메시지를 동기적으로 전달합니다. 소스 블록에서 호출할 send 때 메서드에 의해 호출됩니다. |
unlink_source | 이 propagator_block 개체에서 지정된 소스 블록의 연결을 해제합니다. |
unlink_sources | 이 propagator_block 개체에서 모든 소스 블록의 연결을 해제합니다. (재정의 ITarget::unlink_sources.) |
설명
여러 상속을 방지하기 위해 클래스는 propagator_block
클래스 및 ITarget
추상 클래스에서 source_block
상속됩니다. 클래스의 대부분의 기능은 target_block
여기에 복제됩니다.
상속 계층 구조
propagator_block
요구 사항
헤더: agents.h
네임스페이스: 동시성
decline_incoming_messages
블록에 새 메시지를 거부해야 했음을 나타냅니다.
void decline_incoming_messages();
설명
소멸이 진행되는 동안 새 메시지가 거부되도록 소멸자가 이 메서드를 호출합니다.
initialize_source_and_target
기본 개체를 초기화합니다. 특히 개체를 message_processor
초기화해야 합니다.
void initialize_source_and_target(
_Inout_opt_ Scheduler* _PScheduler = NULL,
_Inout_opt_ ScheduleGroup* _PScheduleGroup = NULL);
매개 변수
_PScheduler
작업 예약에 사용할 스케줄러입니다.
_PScheduleGroup
작업 예약에 사용할 일정 그룹입니다.
link_source
지정된 소스 블록을 이 propagator_block
개체에 연결합니다.
virtual void link_source(_Inout_ ISource<_Source_type>* _PSource);
매개 변수
_PSource
연결할 블록에 ISource
대한 포인터입니다.
process_input_messages
입력된 메시지를 처리합니다. source_block에서 파생되는 전파자 블록에만 유용합니다.
virtual void process_input_messages(_Inout_ message<_Target_type>* _PMessage);
매개 변수
_PMessage
처리할 메시지에 대한 포인터입니다.
전파
소스 블록에서 이 대상 블록으로 메시지를 비동기적으로 전달합니다.
virtual message_status propagate(
_Inout_opt_ message<_Source_type>* _PMessage,
_Inout_opt_ ISource<_Source_type>* _PSource);
매개 변수
_PMessage
message
개체에 대한 포인터입니다.
_PSource
메시지를 제공하는 소스 블록에 대한 포인터입니다.
Return Value
대상이 메시지로 무엇을 하기로 결정했는지에 대한 message_status 표시입니다.
설명
메서드 propagate
는 연결된 소스 블록에 의해 대상 블록에서 호출됩니다. 아직 큐에 대기하거나 실행하지 않은 경우 메시지를 처리하기 위해 비동기 작업을 큐에 대기합니다.
메서드는 매개 변수가 있는 경우 invalid_argument 예외를 _PMessage
throw합니다NULL
._PSource
propagate_message
파생 클래스에서 재정의된 경우 이 메서드는 블록에서 ISource
이 propagator_block
개체로 메시지를 비동기적으로 전달합니다. 소스 블록에서 호출할 propagate
때 메서드에 의해 호출됩니다.
virtual message_status propagate_message(
_Inout_ message<_Source_type>* _PMessage,
_Inout_ ISource<_Source_type>* _PSource) = 0;
매개 변수
_PMessage
message
개체에 대한 포인터입니다.
_PSource
메시지를 제공하는 소스 블록에 대한 포인터입니다.
Return Value
대상이 메시지로 무엇을 하기로 결정했는지에 대한 message_status 표시입니다.
propagator_block
propagator_block
개체를 생성합니다.
propagator_block();
~propagator_block
propagator_block
개체를 제거합니다.
virtual ~propagator_block();
register_filter
받은 모든 메시지에서 호출될 필터 메서드를 등록합니다.
void register_filter(filter_method const& _Filter);
매개 변수
_필터
필터 메서드입니다.
remove_network_links
이 propagator_block
개체에서 모든 원본 및 대상 네트워크 링크를 제거합니다.
void remove_network_links();
send
이 블록에 대한 메시지를 동기적으로 시작합니다. 블록에서 호출합니다 ISource
. 이 함수가 완료되면 메시지가 이미 블록으로 전파됩니다.
virtual message_status send(
_Inout_ message<_Source_type>* _PMessage,
_Inout_ ISource<_Source_type>* _PSource);
매개 변수
_PMessage
message
개체에 대한 포인터입니다.
_PSource
메시지를 제공하는 소스 블록에 대한 포인터입니다.
Return Value
대상이 메시지로 무엇을 하기로 결정했는지에 대한 message_status 표시입니다.
설명
이 메서드는 매개 변수가 _PSource
있는 경우 invalid_argument 예외를 _PMessage
throw합니다NULL
.
send_message
파생 클래스에서 재정의된 경우 이 메서드는 블록에서 ISource
이 propagator_block
개체로 메시지를 동기적으로 전달합니다. 소스 블록에서 호출할 send
때 메서드에 의해 호출됩니다.
virtual message_status send_message(
_Inout_ message<_Source_type> *,
_Inout_ ISource<_Source_type> *);
Return Value
대상이 메시지로 무엇을 하기로 결정했는지에 대한 message_status 표시입니다.
설명
기본적으로 이 블록은 파생 클래스로 재정의되지 않는 한 반환 declined
됩니다.
unlink_source
이 propagator_block
개체에서 지정된 소스 블록의 연결을 해제합니다.
virtual void unlink_source(_Inout_ ISource<_Source_type>* _PSource);
매개 변수
_PSource
연결을 해제할 블록에 대한 포인터 ISource
입니다.
unlink_sources
이 propagator_block
개체에서 모든 소스 블록의 연결을 해제합니다.
virtual void unlink_sources();