Kelas transformator
transformer
Blok olahpesan adalah target tunggal, multi-sumber, yang diurutkan propagator_block
yang dapat menerima pesan dari satu jenis dan mampu menyimpan jumlah pesan yang tidak terbatas dari jenis yang berbeda.
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 |
---|---|
Transformator | Kelebihan beban. Membuat transformer blok olahpesan. |
~Transformer Destructor | transformer Menghancurkan blok olahpesan. |
Metode yang Dilindungi
Nama | Deskripsi |
---|---|
accept_message | Menerima pesan yang ditawarkan oleh blok olahpesan ini transformer , mentransfer kepemilikan ke pemanggil. |
consume_message | Mengonsumsi pesan yang sebelumnya ditawarkan oleh transformer dan dicadangkan oleh target, mentransfer kepemilikan ke pemanggil. |
link_target_notification | Panggilan balik yang memberi tahu bahwa target baru telah ditautkan ke blok olahpesan ini transformer . |
propagate_message | Secara asinkron meneruskan pesan dari ISource blok ke blok olahpesan ini transformer . Ini dipanggil oleh propagate metode , ketika dipanggil oleh blok sumber. |
propagate_to_any_targets | Menjalankan fungsi transformator pada pesan input. |
release_message | Merilis reservasi pesan sebelumnya. (Mengambil alih source_block::release_message.) |
reserve_message | Memesan pesan yang sebelumnya ditawarkan oleh blok olahpesan ini transformer . (Mengambil alih source_block::reserve_message.) |
resume_propagation | Melanjutkan penyebaran setelah reservasi dirilis. (Mengambil alih source_block::resume_propagation.) |
send_message | Secara sinkron meneruskan pesan dari ISource blok ke blok olahpesan ini transformer . Ini dipanggil oleh send metode , ketika dipanggil oleh blok sumber. |
supports_anonymous_source | Mengambil alih supports_anonymous_source metode untuk menunjukkan bahwa blok ini dapat menerima pesan yang ditawarkan oleh sumber yang tidak ditautkan. (Penimpaan ITarget::supports_anonymous_source.) |
Keterangan
Untuk informasi selengkapnya, lihat Blok Pesan Asinkron.
Hierarki Warisan
transformer
Persyaratan
Header: agents.h
Namespace: konkurensi
accept_message
Menerima pesan yang ditawarkan oleh blok olahpesan ini transformer
, mentransfer kepemilikan ke pemanggil.
virtual message<_Output>* accept_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Dari runtime_object_identity
objek yang ditawarkan message
.
Tampilkan Nilai
Penunjuk ke message
objek yang sekarang dimiliki 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 message
objek yang sekarang dimiliki pemanggil.
Keterangan
Mirip accept
dengan , tetapi selalu didahului oleh panggilan ke reserve
.
link_target_notification
Panggilan balik yang memberi tahu bahwa target baru telah ditautkan ke blok olahpesan 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 propagate
metode , 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
Indikasi message_status tentang apa yang diputuskan target dengan pesan.
propagate_to_any_targets
Menjalankan fungsi transformator pada pesan input.
virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);
release_message
Merilis reservasi pesan sebelumnya.
virtual void release_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Objek runtime_object_identity
yang message
dilepaskan.
reserve_message
Memesan pesan yang sebelumnya ditawarkan oleh blok olahpesan ini transformer
.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parameter
_MsgId
Objek runtime_object_identity
yang message
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 penyebaran setelah reservasi dirilis.
virtual void resume_propagation();
send_message
Secara sinkron meneruskan pesan dari ISource
blok ke blok olahpesan ini transformer
. Ini dipanggil oleh send
metode , 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
Indikasi message_status tentang apa yang diputuskan target dengan pesan.
supports_anonymous_source
Mengambil alih supports_anonymous_source
metode 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.
Transformator
Membuat transformer
blok olahpesan.
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
tempat tugas penyebaran untuk transformer
blok olahpesan dijadwalkan.
_PScheduleGroup
Objek ScheduleGroup
tempat tugas penyebaran untuk transformer
blok olahpesan dijadwalkan. Objek Scheduler
yang digunakan tersirat oleh 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.
Jenisnya filter_method
adalah funktor dengan tanda tangan bool (_Input const &)
yang dipanggil oleh blok olahpesan ini transformer
untuk menentukan apakah harus menerima pesan yang ditawarkan atau tidak.
~Transformator
transformer
Menghancurkan blok olahpesan.
~transformer();
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk