다음을 통해 공유


propagator_block 클래스

propagator_block 클래스는 소스인 동시에 대상인 메시지 블록에 대한 추상 기본 클래스입니다. source_blocktarget_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 파생 클래스에서 재정의된 경우 이 메서드는 블록에서 ISourcepropagator_block 개체로 메시지를 비동기적으로 전달합니다. 소스 블록에서 호출할 propagate 때 메서드에 의해 호출됩니다.
register_filter 받은 모든 메시지에서 호출될 필터 메서드를 등록합니다.
remove_network_links propagator_block 개체에서 모든 원본 및 대상 네트워크 링크를 제거합니다.
send_message 파생 클래스에서 재정의된 경우 이 메서드는 블록에서 ISourcepropagator_block 개체로 메시지를 동기적으로 전달합니다. 소스 블록에서 호출할 send 때 메서드에 의해 호출됩니다.
unlink_source propagator_block 개체에서 지정된 소스 블록의 연결을 해제합니다.
unlink_sources propagator_block 개체에서 모든 소스 블록의 연결을 해제합니다. (재정의 ITarget::unlink_sources.)

설명

여러 상속을 방지하기 위해 클래스는 propagator_block 클래스 및 ITarget 추상 클래스에서 source_block 상속됩니다. 클래스의 대부분의 기능은 target_block 여기에 복제됩니다.

상속 계층 구조

ISource

ITarget

source_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
작업 예약에 사용할 일정 그룹입니다.

지정된 소스 블록을 이 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

파생 클래스에서 재정의된 경우 이 메서드는 블록에서 ISourcepropagator_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);

매개 변수

_필터
필터 메서드입니다.

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

파생 클래스에서 재정의된 경우 이 메서드는 블록에서 ISourcepropagator_block 개체로 메시지를 동기적으로 전달합니다. 소스 블록에서 호출할 send 때 메서드에 의해 호출됩니다.

virtual message_status send_message(
    _Inout_ message<_Source_type> *,
    _Inout_ ISource<_Source_type> *);

Return Value

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

설명

기본적으로 이 블록은 파생 클래스로 재정의되지 않는 한 반환 declined 됩니다.

propagator_block 개체에서 지정된 소스 블록의 연결을 해제합니다.

virtual void unlink_source(_Inout_ ISource<_Source_type>* _PSource);

매개 변수

_PSource
연결을 해제할 블록에 대한 포인터 ISource 입니다.

propagator_block 개체에서 모든 소스 블록의 연결을 해제합니다.

virtual void unlink_sources();

참고 항목

concurrency 네임스페이스
source_block 클래스
ITarget 클래스