Bagikan melalui


Kelas target_block

Kelas target_block ini adalah kelas dasar abstrak yang menyediakan fungsionalitas manajemen tautan dasar dan pemeriksaan kesalahan hanya untuk blok target.

Sintaks

template<class _SourceLinkRegistry, class _MessageProcessorType = ordered_message_processor<typename _SourceLinkRegistry::type::source_type>>
class target_block : public ITarget<typename _SourceLinkRegistry::type::source_type>;

Parameter

_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 objek ini target_block .

Konstruktor Publik

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

Metode Publik

Nama Deskripsi
Menyebarkan Secara asinkron meneruskan pesan dari blok sumber ke blok target ini.
kirim Secara sinkron meneruskan pesan dari blok sumber ke blok target ini.

Metode yang Dilindungi

Nama Deskripsi
async_send Secara asinkron mengirim pesan untuk diproses.
decline_incoming_messages Menunjukkan ke blok bahwa pesan baru harus ditolak.
enable_batched_processing Mengaktifkan pemrosesan batch untuk blok ini.
initialize_target Menginisialisasi objek dasar. Secara khusus, message_processor objek perlu diinisialisasi.
link_source Menautkan blok sumber tertentu ke objek ini target_block .
process_input_messages Memproses pesan yang diterima sebagai input.
process_message Ketika ditimpa di kelas turunan, memproses pesan yang diterima oleh objek ini target_block .
propagate_message Ketika ditimpa dalam kelas turunan, metode ini secara asinkron meneruskan pesan dari ISource blok ke objek ini target_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_sources Batalkan tautan semua sumber setelah menunggu operasi pengiriman asinkron yang luar biasa selesai.
send_message Ketika ditimpa dalam kelas turunan, metode ini secara sinkron meneruskan pesan dari ISource blok ke objek ini target_block . Ini dipanggil oleh send metode , ketika dipanggil oleh blok sumber.
sync_send Secara sinkron mengirim pesan untuk diproses.
unlink_source Batalkan tautan blok sumber tertentu dari objek ini target_block .
unlink_sources Batalkan tautan semua blok sumber dari objek ini target_block . (Penimpaan ITarget::unlink_sources.)
wait_for_async_sends Menunggu semua penyebaran asinkron selesai.

Hierarki Warisan

ITarget

target_block

Persyaratan

Header: agents.h

Namespace: konkurensi

async_send

Secara asinkron mengirim pesan untuk diproses.

void async_send(_Inout_opt_ message<_Source_type>* _PMessage);

Parameter

_PMessage
Penunjuk ke pesan yang dikirim.

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.

enable_batched_processing

Mengaktifkan pemrosesan batch untuk blok ini.

void enable_batched_processing();

initialize_target

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

void initialize_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 target_block .

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

Parameter

_PSource
Penunjuk ke ISource blok yang akan ditautkan.

Keterangan

Fungsi ini tidak boleh dipanggil langsung pada target_block objek. Blok harus dihubungkan bersama-sama menggunakan link_target metode pada ISource blok, yang akan memanggil link_source metode pada target yang sesuai.

process_input_messages

Memproses pesan yang diterima sebagai input.

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

Parameter

_PMessage
Penunjuk ke pesan yang akan diproses.

process_message

Ketika ditimpa di kelas turunan, memproses pesan yang diterima oleh objek ini target_block .

virtual void process_message(message<_Source_type> *);

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 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 target_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.

register_filter

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

void register_filter(filter_method const& _Filter);

Parameter

_Saringan
Metode filter.

remove_sources

Batalkan tautan semua sumber setelah menunggu operasi pengiriman asinkron yang luar biasa selesai.

void remove_sources();

Keterangan

Semua blok target harus memanggil rutinitas ini untuk menghapus sumber di destruktor mereka.

kirim

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

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 melempar pengecualian invalid_argument jika _PMessage parameter atau _PSource adalah NULL.

Menggunakan metode di send luar inisiasi pesan dan untuk menyebarluaskan pesan dalam jaringan berbahaya dan dapat menyebabkan kebuntuan.

Ketika send kembali, pesan telah diterima, dan ditransfer ke blok target, atau telah ditolak oleh target.

send_message

Ketika ditimpa dalam kelas turunan, metode ini secara sinkron meneruskan pesan dari ISource blok ke objek ini target_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.

sync_send

Secara sinkron mengirim pesan untuk diproses.

void sync_send(_Inout_opt_ message<_Source_type>* _PMessage);

Parameter

_PMessage
Penunjuk ke pesan yang dikirim.

target_block

Membuat target_block objek.

target_block();

~target_block

target_block Menghancurkan objek.

virtual ~target_block();

Batalkan tautan blok sumber tertentu dari objek ini target_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 target_block .

virtual void unlink_sources();

wait_for_async_sends

Menunggu semua penyebaran asinkron selesai.

void wait_for_async_sends();

Keterangan

Metode ini digunakan oleh destruktor blok pesan untuk memastikan semua operasi asinkron memiliki waktu untuk menyelesaikan sebelum menghancurkan blok.

Lihat juga

Namespace layanan konkurensi
Kelas ITarget