Kelas ISource

Kelas ISource adalah antarmuka untuk semua blok sumber. Pesan dari blok sumber dipancarkan ke blok ITarget.

Sintaks

template<class T>
class ISource;

Parameter

T
Jenis data payload dalam pesan yang dihasilkan oleh blok sumber.

Anggota

Typedef Publik

Nama Deskripsi
source_type Alias jenis untuk T.

Konstruktor Publik

Nama Deskripsi
~ISource Destructor ISource Menghancurkan objek.

Metode Publik

Nama Deskripsi
terima Ketika ditimpa di kelas turunan, menerima pesan yang ditawarkan oleh blok ini ISource , mentransfer kepemilikan ke pemanggil.
acquire_ref Ketika metode ini diubah dalam kelas turunan, memperoleh penghitungan referensi pada blok ISource ini untuk mencegah penghapusan.
mengonsumsi Saat diterapkan dalam kelas turunan, mengambil alih pesan yang sebelumnya ditawarkan oleh blok ini ISource dan berhasil dicadangkan oleh target, mengalihkan kepemilikan ke pemanggil.
link_target Ketika diimplementasikan dalam kelas turunan, menautkan blok target ke blok ISource ini.
lepaskan Saat ditimpa di kelas turunan, merilis reservasi pesan yang berhasil sebelumnya.
release_ref Ketika diimplementasikan dalam kelas turunan, mengurangi jumlah referensi dari blok ini ISource.
cadangan Ketika dioverride dalam kelas turunan, memesan kembali pesan yang sebelumnya ditawarkan oleh blok ISource ini.
unlink_target Ketika digantikan di kelas turunan, memutus blok target dari blok ISource ini, jika ditemukan telah ditautkan sebelumnya.
unlink_targets Ketika dieksekusi di kelas turunan, memutuskan semua tautan blok target dari blok ISource ini.

Keterangan

Untuk informasi selengkapnya, lihat Blok Pesan Asinkron.

Hierarki Pewarisan

ISource

Persyaratan

Header: agents.h

Namespace: konkurensi

Menerima

Saat dilakukan override di kelas turunan, menerima pesan yang ditawarkan oleh blok ISource ini, mentransfer kepemilikan ke pemanggil.

virtual message<T>* accept(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Parameter

_MsgId
Objek message yang ditawarkan dari runtime_object_identity.

_PTarget
Penunjuk ke blok sasaran yang memanggil metode accept.

Tampilkan Nilai

Penunjuk ke pesan yang sekarang dimiliki pemanggil.

Keterangan

Metode accept ini dipanggil oleh target saat pesan sedang ditawarkan oleh blok ini ISource . Penunjuk pesan yang dikembalikan mungkin berbeda dari yang diteruskan ke propagate metode ITarget blok, jika sumber ini memutuskan untuk membuat salinan pesan.

acquire_ref

Ketika metode ini diubah dalam kelas turunan, memperoleh penghitungan referensi pada blok ISource ini untuk mencegah penghapusan.

virtual void acquire_ref(_Inout_ ITarget<T>* _PTarget) = 0;

Parameter

_PTarget
Penunjuk ke blok target yang memanggil metode ini.

Keterangan

Metode ini dipanggil oleh objek ITarget yang sedang ditautkan ke sumber ini selama metode link_target.

mengonsumsi

Saat diterapkan dalam kelas turunan, mengambil alih pesan yang sebelumnya ditawarkan oleh blok ini ISource dan berhasil dicadangkan oleh target, mengalihkan kepemilikan ke pemanggil.

virtual message<T>* consume(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Parameter

_MsgId
Bagian runtime_object_identity dari objek message yang dipesan.

_PTarget
Penunjuk ke blok sasaran yang memanggil metode consume.

Tampilkan Nilai

Penunjuk ke objek message yang dimiliki sekarang oleh pemanggil.

Keterangan

Metode consume ini mirip dengan accept, tetapi harus selalu didahului oleh panggilan ke reserve yang mengembalikan true.

~ISource

ISource Menghancurkan objek.

virtual ~ISource();

Ketika diimplementasikan dalam kelas turunan, menautkan blok target ke blok ISource ini.

virtual void link_target(_Inout_ ITarget<T>* _PTarget) = 0;

Parameter

_PTarget
Penunjuk ke blok target yang ditautkan ke blok ini ISource .

rilis

Saat ditimpa di kelas turunan, merilis reservasi pesan yang berhasil sebelumnya.

virtual void release(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Parameter

_MsgId
Bagian runtime_object_identity dari objek message yang dipesan.

_PTarget
Penunjuk ke blok sasaran yang memanggil metode release.

release_ref

Ketika diimplementasikan dalam kelas turunan, mengurangi jumlah referensi dari blok ini ISource.

virtual void release_ref(_Inout_ ITarget<T>* _PTarget) = 0;

Parameter

_PTarget
Penunjuk ke blok target yang memanggil metode ini.

Keterangan

Metode ini dipanggil oleh objek ITarget yang sedang dilepaskan tautannya dari sumber ini. Blok sumber diperbolehkan melepaskan sumber daya apa pun yang dicadangkan untuk blok target.

cadangan

Ketika dioverride dalam kelas turunan, memesan kembali pesan yang sebelumnya ditawarkan oleh blok ISource ini.

virtual bool reserve(
    runtime_object_identity _MsgId,
    _Inout_ ITarget<T>* _PTarget) = 0;

Parameter

_MsgId
Objek message yang ditawarkan dari runtime_object_identity.

_PTarget
Penunjuk ke blok sasaran yang memanggil metode reserve.

Tampilkan Nilai

true jika pesan berhasil dicadangkan, false jika tidak. Reservasi dapat gagal karena banyak alasan, termasuk: pesan sudah dicadangkan atau diterima oleh target lain, sumber dapat menolak reservasi, dan sebagainya.

Keterangan

Setelah Anda memanggil reserve, jika berhasil, Anda harus memanggil consume atau release untuk memastikan bahwa kepemilikan pesan diambil atau dilepas, masing-masing.

Ketika digantikan di kelas turunan, memutus blok target dari blok ISource ini, jika ditemukan telah ditautkan sebelumnya.

virtual void unlink_target(_Inout_ ITarget<T>* _PTarget) = 0;

Parameter

_PTarget
Penunjuk ke blok target dihapus tautannya dari blok ini ISource .

Ketika dieksekusi di kelas turunan, memutuskan semua tautan blok target dari blok ISource ini.

virtual void unlink_targets() = 0;

Lihat juga

Namespace layanan konkurensi
Kelas ITarget