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.
transformer Blok pesan terurut adalah target tunggal, multi-sumber propagator_block yang dapat menerima pesan dari satu jenis dan mampu menyimpan jumlah pesan yang tak terbatas dari jenis lain.
Sintaks
template <class _Input, class _Output>
class transformer : public propagator_block<single_link_registry<ITarget<_Output>>,
multi_link_registry<ISource<_Input>>>;
Parameter
_Input
Jenis payload pesan yang diterima oleh buffer.
_Output
Jenis payload pesan yang disimpan dan disebarluaskan oleh buffer.
Anggota
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
transformer |
Kelebihan beban. Membuat transformer blok pesan. |
~transformer |
Menghancurkan blok pesan transformer. |
Metode yang Dilindungi
| Nama | Deskripsi |
|---|---|
accept_message |
Menerima pesan yang ditawarkan oleh blok olahpesan ini transformer, dengan mentransfer kepemilikannya kepada pemanggil. |
consume_message |
Mengonsumsi pesan yang sebelumnya ditawarkan oleh transformer dan dicadangkan oleh target, mentransfer kepemilikan ke pemanggil. |
link_target_notification |
Sebuah callback yang memberi tahu bahwa target baru telah ditautkan ke blok pesan ini transformer. |
propagate_message |
Secara asinkron meneruskan pesan dari ISource blok ke blok olahpesan ini transformer . Ini dipanggil oleh metode propagate ketika dipanggil oleh blok sumber. |
propagate_to_any_targets |
Menjalankan fungsi transformator pada pesan input. |
release_message |
Menghapus reservasi pesan yang sebelumnya. (Menggantikan source_block::release_message.) |
reserve_message |
Mengamankan pesan yang sebelumnya ditawarkan oleh blok olahpesan ini transformer. (Mengganti source_block::reserve_message.) |
resume_propagation |
Melanjutkan proses penyebaran setelah reservasi dilepaskan. (Mengesampingkan source_block::resume_propagation.) |
send_message |
Secara sinkron meneruskan pesan dari ISource blok ke blok olahpesan ini transformer . Ini dipanggil oleh metode send ketika dipanggil oleh blok sumber. |
supports_anonymous_source |
Mengganti metode supports_anonymous_source untuk menunjukkan bahwa blok ini dapat menerima pesan yang ditawarkan oleh sumber yang tidak ditautkan. (Menimpa ITarget::supports_anonymous_source.) |
Keterangan
Untuk informasi selengkapnya, lihat Blok Pesan Asinkron.
Hierarki Pewarisan
transformer
Persyaratan
Header: agents.h
Namespace: konkurensi
accept_message
Menerima pesan yang ditawarkan oleh blok olahpesan ini transformer, dengan mentransfer kepemilikannya kepada pemanggil.
virtual message<_Output>* accept_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Objek message yang ditawarkan dari runtime_object_identity.
Tampilkan Nilai
Penunjuk ke objek message yang dimiliki sekarang oleh pemanggil.
consume_message
Mengonsumsi pesan yang sebelumnya ditawarkan oleh transformer dan dicadangkan oleh target, mentransfer kepemilikan ke pemanggil.
virtual message<_Output>* consume_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Objek runtime_object_identity yang message dikonsumsi.
Tampilkan Nilai
Penunjuk ke objek message yang dimiliki sekarang oleh pemanggil.
Keterangan
Mirip dengan accept, tetapi selalu didahului oleh panggilan ke reserve.
link_target_notification
Sebuah callback yang memberi tahu bahwa target baru telah ditautkan ke blok pesan ini transformer.
virtual void link_target_notification(_Inout_ ITarget<_Output> *);
propagate_message
Secara asinkron meneruskan pesan dari ISource blok ke blok olahpesan ini transformer . Ini dipanggil oleh metode propagate ketika dipanggil oleh blok sumber.
virtual message_status propagate_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parameter
_PMessage
Penunjuk ke message objek.
_PSource
Penunjuk ke blok sumber yang menawarkan pesan.
Tampilkan Nilai
Tanda message_status tentang keputusan target terhadap pesan.
propagate_to_any_targets
Menjalankan fungsi transformator pada pesan input.
virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);
release_message
Menghapus reservasi pesan yang sebelumnya.
virtual void release_message(runtime_object_identity _MsgId);
Parameter
_MsgId
runtime_object_identity dari objek message yang dilepaskan.
reserve_message
Mengamankan pesan yang sebelumnya ditawarkan oleh blok olahpesan ini transformer.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Objek message dari runtime_object_identity sedang dicadangkan.
Tampilkan Nilai
true jika pesan berhasil dicadangkan, false jika tidak.
Keterangan
Setelah reserve dipanggil, jika mengembalikan true, baik consume atau release harus dipanggil untuk mengambil atau melepaskan kepemilikan pesan.
resume_propagation
Melanjutkan proses penyebaran setelah reservasi dilepaskan.
virtual void resume_propagation();
send_message
Secara sinkron meneruskan pesan dari ISource blok ke blok olahpesan ini transformer . Ini dipanggil oleh metode send ketika dipanggil oleh blok sumber.
virtual message_status send_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parameter
_PMessage
Penunjuk ke message objek.
_PSource
Penunjuk ke blok sumber yang menawarkan pesan.
Tampilkan Nilai
Tanda message_status tentang keputusan target terhadap pesan.
supports_anonymous_source
Mengganti metode supports_anonymous_source untuk menunjukkan bahwa blok ini dapat menerima pesan yang ditawarkan oleh sumber yang tidak ditautkan.
virtual bool supports_anonymous_source();
Tampilkan Nilai
true karena blok tidak menunda pesan yang ditawarkan.
transformer
Membuat transformer blok pesan.
transformer(
_Transform_method const& _Func,
_Inout_opt_ ITarget<_Output>* _PTarget = NULL);
transformer(
_Transform_method const& _Func,
_Inout_opt_ ITarget<_Output>* _PTarget,
filter_method const& _Filter);
transformer(
Scheduler& _PScheduler,
_Transform_method const& _Func,
_Inout_opt_ ITarget<_Output>* _PTarget = NULL);
transformer(
Scheduler& _PScheduler,
_Transform_method const& _Func,
_Inout_opt_ ITarget<_Output>* _PTarget,
filter_method const& _Filter);
transformer(
ScheduleGroup& _PScheduleGroup,
_Transform_method const& _Func,
_Inout_opt_ ITarget<_Output>* _PTarget = NULL);
transformer(
ScheduleGroup& _PScheduleGroup,
_Transform_method const& _Func,
_Inout_opt_ ITarget<_Output>* _PTarget,
filter_method const& _Filter);
Parameter
_Func
Fungsi yang akan dipanggil untuk setiap pesan yang diterima.
_PTarget
Penunjuk ke blok target untuk ditautkan dengan transformator.
_Filter
Fungsi filter yang menentukan apakah pesan yang ditawarkan harus diterima.
_PScheduler
Objek Scheduler di mana tugas propagasi untuk blok olahpesan transformer dijadwalkan.
_PScheduleGroup
Objek ScheduleGroup di mana tugas propagasi untuk blok olahpesan transformer dijadwalkan. Objek Scheduler yang digunakan dapat disimpulkan dari grup jadwal.
Keterangan
Runtime menggunakan penjadwal default jika Anda tidak menentukan _PScheduler parameter atau _PScheduleGroup .
Jenisnya _Transform_method adalah funktor dengan tanda tangan _Output (_Input const &) yang dipanggil oleh blok olahpesan ini transformer untuk memproses pesan.
Jenis filter_method adalah funktor dengan tanda tangan bool (_Input const &) yang dipanggil oleh blok pesan transformer ini untuk menentukan apakah harus menerima pesan yang ditawarkan atau tidak.
~transformer
Menghancurkan blok pesan transformer.
~transformer();