Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
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.
link_source
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();
unlink_source
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.
unlink_sources
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.