Share via


Kelas propagator_block

Kelas propagator_block adalah kelas dasar abstrak untuk blok pesan yang merupakan sumber dan target. Ini menggabungkan fungsionalitas kelas source_block dan target_block .

Sintaks

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>;

Parameter

_TargetLinkRegistry
Registri tautan yang akan digunakan untuk menyimpan tautan target.

_SourceLinkRegistry
Registri tautan yang akan digunakan untuk menyimpan tautan sumber.

_MessageProcessorType
Jenis prosesor untuk pemrosesan pesan.

Anggota

Typedef Publik

Nama Deskripsi
source_iterator Jenis iterator untuk source_link_manager ini propagator_block.

Konstruktor Publik

Nama Deskripsi
propagator_block Membuat propagator_block objek.
~propagator_block Destructor Menghancurkan objek propagator_block .

Metode Publik

Nama Deskripsi
Menyebarkan Secara asinkron meneruskan pesan dari blok sumber ke blok target ini.
Mengirim Secara sinkron memulai pesan ke blok ini. Dipanggil oleh blok ISource . Ketika fungsi ini selesai, pesan akan sudah disebarluaskan ke blok.

Metode yang Dilindungi

Nama Deskripsi
decline_incoming_messages Menunjukkan ke blok bahwa pesan baru harus ditolak.
initialize_source_and_target Menginisialisasi objek dasar. Secara khusus, message_processor objek perlu diinisialisasi.
link_source Menautkan blok sumber tertentu ke objek ini propagator_block .
process_input_messages Memproses pesan input. Ini hanya berguna untuk blok propagator, yang berasal dari source_block (Ambil alih source_block::p rocess_input_messages.)
propagate_message Ketika ditimpa dalam kelas turunan, metode ini secara asinkron meneruskan pesan dari ISource blok ke objek ini propagator_block . Ini dipanggil oleh propagate metode , ketika dipanggil oleh blok sumber.
register_filter Mendaftarkan metode filter yang akan dipanggil pada setiap pesan yang diterima.
remove_network_links Menghapus semua tautan jaringan sumber dan target dari objek ini propagator_block .
send_message Ketika ditimpa dalam kelas turunan, metode ini secara sinkron meneruskan pesan dari ISource blok ke objek ini propagator_block . Ini dipanggil oleh send metode , ketika dipanggil oleh blok sumber.
unlink_source Batalkan tautan blok sumber tertentu dari objek ini propagator_block .
unlink_sources Batalkan tautan semua blok sumber dari objek ini propagator_block . (Penimpaan ITarget::unlink_sources.)

Keterangan

Untuk menghindari beberapa warisan, propagator_block kelas mewarisi dari source_block kelas dan ITarget kelas abstrak. Sebagian besar fungsionalitas di kelas direplikasi target_block di sini.

Hierarki Warisan

ISource

ITarget

source_block

propagator_block

Persyaratan

Header: agents.h

Namespace: konkurensi

decline_incoming_messages

Menunjukkan ke blok bahwa pesan baru harus ditolak.

void decline_incoming_messages();

Keterangan

Metode ini dipanggil oleh destruktor untuk memastikan bahwa pesan baru ditolak saat penghancuran sedang berlangsung.

initialize_source_and_target

Menginisialisasi objek dasar. Secara khusus, message_processor objek perlu diinisialisasi.

void initialize_source_and_target(
    _Inout_opt_ Scheduler* _PScheduler = NULL,
    _Inout_opt_ ScheduleGroup* _PScheduleGroup = NULL);

Parameter

_PScheduler
Penjadwal yang akan digunakan untuk menjadwalkan tugas.

_PScheduleGroup
Grup jadwal yang akan digunakan untuk menjadwalkan tugas.

Menautkan blok sumber tertentu ke objek ini propagator_block .

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

Parameter

_PSource
Penunjuk ke ISource blok yang akan ditautkan.

process_input_messages

Memproses pesan input. Ini hanya berguna untuk blok penyebar, yang berasal dari source_block

virtual void process_input_messages(_Inout_ message<_Target_type>* _PMessage);

Parameter

_PMessage
Penunjuk ke pesan yang akan diproses.

Menyebarkan

Secara asinkron meneruskan pesan dari blok sumber ke blok target ini.

virtual message_status propagate(
    _Inout_opt_ message<_Source_type>* _PMessage,
    _Inout_opt_ ISource<_Source_type>* _PSource);

Parameter

_PMessage
Penunjuk ke message objek.

_PSource
Penunjuk ke blok sumber yang menawarkan pesan.

Tampilkan Nilai

Indikasi message_status tentang apa yang diputuskan target dengan pesan.

Keterangan

Metode propagate ini dipanggil pada blok target oleh blok sumber tertaut. Ini mengantre tugas asinkron untuk menangani pesan, jika belum diantrekan atau dijalankan.

Metode ini melempar pengecualian invalid_argument jika _PMessage parameter atau _PSource adalah NULL.

propagate_message

Ketika ditimpa dalam kelas turunan, metode ini secara asinkron meneruskan pesan dari ISource blok ke objek ini propagator_block . Ini dipanggil oleh propagate metode , ketika dipanggil oleh blok sumber.

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

Parameter

_PMessage
Penunjuk ke message objek.

_PSource
Penunjuk ke blok sumber yang menawarkan pesan.

Tampilkan Nilai

Indikasi message_status tentang apa yang diputuskan target dengan pesan.

propagator_block

Membuat propagator_block objek.

propagator_block();

~propagator_block

Menghancurkan objek propagator_block .

virtual ~propagator_block();

register_filter

Mendaftarkan metode filter yang akan dipanggil pada setiap pesan yang diterima.

void register_filter(filter_method const& _Filter);

Parameter

_Filter
Metode filter.

Menghapus semua tautan jaringan sumber dan target dari objek ini propagator_block .

void remove_network_links();

Mengirim

Secara sinkron memulai pesan ke blok ini. Dipanggil oleh blok ISource . Ketika fungsi ini selesai, pesan akan sudah disebarluaskan ke blok.

virtual message_status send(
    _Inout_ message<_Source_type>* _PMessage,
    _Inout_ ISource<_Source_type>* _PSource);

Parameter

_PMessage
Penunjuk ke message objek.

_PSource
Penunjuk ke blok sumber yang menawarkan pesan.

Tampilkan Nilai

Indikasi message_status tentang apa yang diputuskan target dengan pesan.

Keterangan

Metode ini melemparkan pengecualian invalid_argument jika _PMessage parameter atau _PSource adalah NULL.

send_message

Ketika ditimpa dalam kelas turunan, metode ini secara sinkron meneruskan pesan dari ISource blok ke objek ini propagator_block . Ini dipanggil oleh send metode , ketika dipanggil oleh blok sumber.

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

Tampilkan Nilai

Indikasi message_status tentang apa yang diputuskan target dengan pesan.

Keterangan

Secara default, blok ini mengembalikan declined kecuali ditimpa oleh kelas turunan.

Batalkan tautan blok sumber tertentu dari objek ini propagator_block .

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

Parameter

_PSource
Penunjuk ke ISource blok yang akan dilepas tautannya.

Batalkan tautan semua blok sumber dari objek ini propagator_block .

virtual void unlink_sources();

Baca juga

Namespace layanan konkurensi
Kelas source_block
Kelas ITarget