source_block Sınıfı
source_block
sınıfı, yalnızca kaynak blokları için soyut bir temel sınıftır. sınıfı, temel bağlantı yönetimi işlevlerinin yanı sıra yaygın hata denetimleri de sağlar.
Sözdizimi
template<class _TargetLinkRegistry, class _MessageProcessorType = ordered_message_processor<typename _TargetLinkRegistry::type::type>>
class source_block : public ISource<typename _TargetLinkRegistry::type::type>;
Parametreler
_TargetLinkRegistry
Hedef bağlantıları tutmak için kullanılacak bağlantı kayıt defteri.
_MessageProcessorType
İleti işleme için işlemci türü.
Üyeler
Genel Tür Tanımları
Ad | Tanım |
---|---|
target_iterator |
Bağlı hedeflerin yürümesi için yineleyici. |
Ortak Oluşturucular
Ad | Tanım |
---|---|
Source_block | Bir source_block nesne oluşturur. |
~source_block Yıkıcı | Nesneyi yok eder source_block . |
Genel Yöntemler
Ad | Tanım |
---|---|
Kabul | Bu source_block nesne tarafından sunulan ve sahipliğini çağırana aktaran bir iletiyi kabul eder. |
acquire_ref | Silme işlemini önlemek için bu source_block nesne üzerinde bir başvuru sayısı alır. |
Tüket -mek | Daha önce bu source_block nesne tarafından sunulan ve hedef tarafından başarıyla ayrılmış bir iletiyi kullanır ve sahipliğini çağırana aktarır. |
link_target | Hedef bloğu bu source_block nesneye bağlar. |
Sürüm | Önceki başarılı bir ileti ayırmayı yayınlar. |
release_ref | Bu source_block nesne üzerinde bir başvuru sayısı serbest bırakır. |
Rezerv | Daha önce bu source_block nesne tarafından sunulan bir iletiyi ayırır. |
unlink_target | Bir hedef bloğun bu source_block nesneyle bağlantısını kaldırır. |
unlink_targets | Bu source_block nesnenin tüm hedef bloklarının bağlantısını kaldırır. (Geçersiz Kılmalar ISource::unlink_targets.) |
Korumalı Yöntemler
Ad | Tanım |
---|---|
accept_message | Türetilmiş bir sınıfta geçersiz kılındığında, kaynak tarafından sunulan bir iletiyi kabul eder. İleti blokları, doğrulamak ve bir ileti döndürmek _MsgId için bu yöntemi geçersiz kılmalıdır. |
async_send | İletileri zaman uyumsuz olarak kuyruğa alır ve bu henüz yapılmadıysa bir yayma görevi başlatır |
consume_message | Türetilmiş bir sınıfta geçersiz kılındığında, daha önce ayrılmış bir ileti tüketir. |
enable_batched_processing | Bu blok için toplu işlemeyi etkinleştirir. |
initialize_source | içinde source_block öğesini message_propagator başlatır. |
link_target_notification | Bu source_block nesneye yeni bir hedefin bağlandığını bildiren bir geri çağırma. |
process_input_messages | Giriş iletilerini işleme. Bu yalnızca source_block türetilen yayıcı blokları için kullanışlıdır |
propagate_output_messages | İletileri hedeflere yayma. |
propagate_to_any_targets | Türetilmiş bir sınıfta geçersiz kılındığında, verilen iletiyi bağlantılı hedeflerin herhangi birine veya tümüne yayılım. Bu, ileti blokları için ana yayma yordamıdır. |
release_message | Türetilmiş bir sınıfta geçersiz kılındığında, önceki bir ileti ayırmayı serbest bırakır. |
remove_targets | Bu kaynak bloğun tüm hedef bağlantılarını kaldırır. Bu, yıkıcıdan çağrılmalıdır. |
reserve_message | Türetilmiş bir sınıfta geçersiz kılındığında, bu source_block nesne tarafından daha önce sunulan bir iletiyi ayırır. |
resume_propagation | Türetilmiş bir sınıfta geçersiz kılındığında, rezervasyon yayımlandıktan sonra yayılmaya devam eder. |
sync_send | İletileri zaman uyumlu bir şekilde kuyruğa alır ve bu henüz yapılmadıysa bir yayma görevi başlatır. |
unlink_target_notification | Bir hedefin bu source_block nesneyle bağlantısının kaldırıldığını bildiren geri çağırma. |
wait_for_outstanding_async_sends | Tüm zaman uyumsuz yaymaların tamamlanmasını bekler. Bu yayıcıya özgü döndürme beklemesi, tüm zaman uyumsuz yaymaların bloğu yok etmeden önce bitmesi gereken zamana sahip olduğundan emin olmak için ileti bloklarının yıkıcılarında kullanılır. |
Açıklamalar
bu sınıf tarafından sağlanan bağlantı yönetimi ve eşitlemeden yararlanmak için ileti blokları bu bloktan türetilmelidir.
Devralma Hiyerarşisi
source_block
Gereksinimler
Üst bilgi: agents.h
Ad alanı: eşzamanlılık
kabul et
Bu source_block
nesne tarafından sunulan ve sahipliğini çağırana aktaran bir iletiyi kabul eder.
virtual message<_Target_type>* accept(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Target_type>* _PTarget);
Parametreler
_MsgId
runtime_object_identity
Sunulan message
nesnenin öğesi.
_PTarget
yöntemini çağıran hedef bloğun işaretçisi accept
.
İade Değeri
Çağıranın message
artık sahip olduğu nesnenin işaretçisi.
Açıklamalar
parametresi _PTarget
NULL
ise yöntemi bir invalid_argument özel durumu oluşturur.
Bu accept
blok tarafından bir ileti sunulurken yöntemi bir hedef tarafından ISource
çağrılır. Döndürülen ileti işaretçisi, bu kaynak iletinin bir kopyasını yapmaya karar verirse bloğun ITarget
yöntemine geçirilenden propagate
farklı olabilir.
accept_message
Türetilmiş bir sınıfta geçersiz kılındığında, kaynak tarafından sunulan bir iletiyi kabul eder. İleti blokları, doğrulamak ve bir ileti döndürmek _MsgId
için bu yöntemi geçersiz kılmalıdır.
virtual message<_Target_type>* accept_message(runtime_object_identity _MsgId) = 0;
Parametreler
_MsgId
Nesnenin message
çalışma zamanı nesne kimliği.
İade Değeri
Çağıranın artık sahip olduğu iletinin işaretçisi.
Açıklamalar
Sahipliği aktarmak için özgün ileti işaretçisi döndürülmelidir. Sahipliği korumak için ileti yükünün bir kopyasının yapılması ve döndürülmesi gerekir.
acquire_ref
Silme işlemini önlemek için bu source_block
nesne üzerinde bir başvuru sayısı alır.
virtual void acquire_ref(_Inout_ ITarget<_Target_type> *);
Açıklamalar
Bu yöntem, yöntemi sırasında bu kaynağa bağlı olan bir ITarget
nesne tarafından çağrılır link_target
.
async_send
İletileri zaman uyumsuz olarak kuyruğa alır ve bu henüz yapılmadıysa bir yayma görevi başlatır
virtual void async_send(_Inout_opt_ message<_Target_type>* _Msg);
Parametreler
_Msg
Zaman uyumsuz olarak gönderilecek bir message
nesne işaretçisi.
consume
Daha önce bu source_block
nesne tarafından sunulan ve hedef tarafından başarıyla ayrılmış bir iletiyi kullanır ve sahipliğini çağırana aktarır.
virtual message<_Target_type>* consume(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Target_type>* _PTarget);
Parametreler
_MsgId
runtime_object_identity
Ayrılmış message
nesnenin öğesi.
_PTarget
yöntemini çağıran hedef bloğun işaretçisi consume
.
İade Değeri
Çağıranın message
artık sahip olduğu nesnenin işaretçisi.
Açıklamalar
parametresi _PTarget
NULL
ise yöntemi bir invalid_argument özel durumu oluşturur.
parametresi _PTarget
çağrılan reserve
hedefi temsil etmiyorsa yöntemi bir bad_target özel durumu oluşturur.
consume
yöntemi ile accept
benzerdir, ancak her zaman döndürülen true
öğesine reserve
yapılan bir çağrıdan önce olmalıdır.
consume_message
Türetilmiş bir sınıfta geçersiz kılındığında, daha önce ayrılmış bir ileti tüketir.
virtual message<_Target_type>* consume_message(runtime_object_identity _MsgId) = 0;
Parametreler
_MsgId
runtime_object_identity
Tüketilen nesnenin message
sayısı.
İade Değeri
Çağıranın artık sahip olduğu iletinin işaretçisi.
Açıklamalar
benzeridir accept
, ancak her zaman için bir çağrısının reserve
önündedir.
enable_batched_processing
Bu blok için toplu işlemeyi etkinleştirir.
void enable_batched_processing();
initialize_source
içinde source_block
öğesini message_propagator
başlatır.
void initialize_source(
_Inout_opt_ Scheduler* _PScheduler = NULL,
_Inout_opt_ ScheduleGroup* _PScheduleGroup = NULL);
Parametreler
_PScheduler
Görevleri zamanlamak için kullanılacak zamanlayıcı.
_PScheduleGroup
Görevleri zamanlamak için kullanılacak zamanlama grubu.
link_target
Hedef bloğu bu source_block
nesneye bağlar.
virtual void link_target(_Inout_ ITarget<_Target_type>* _PTarget);
Parametreler
_PTarget
Bu source_block
nesneye bağlanmak için bir ITarget
bloğun işaretçisi.
Açıklamalar
parametresi _PTarget
NULL
ise yöntemi bir invalid_argument özel durumu oluşturur.
link_target_notification
Bu source_block
nesneye yeni bir hedefin bağlandığını bildiren bir geri çağırma.
virtual void link_target_notification(_Inout_ ITarget<_Target_type> *);
process_input_messages
Giriş iletilerini işleme. Bu yalnızca source_block türetilen yayıcı blokları için kullanışlıdır
virtual void process_input_messages(_Inout_ message<_Target_type>* _PMessage);
Parametreler
_PMessage
İşlenecek iletinin işaretçisi.
propagate_output_messages
İletileri hedeflere yayma.
virtual void propagate_output_messages();
propagate_to_any_targets
Türetilmiş bir sınıfta geçersiz kılındığında, verilen iletiyi bağlantılı hedeflerin herhangi birine veya tümüne yayılım. Bu, ileti blokları için ana yayma yordamıdır.
virtual void propagate_to_any_targets(_Inout_opt_ message<_Target_type>* _PMessage);
Parametreler
_PMessage
Yayılacak iletinin işaretçisi.
Sürüm
Önceki başarılı bir ileti ayırmayı yayınlar.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Target_type>* _PTarget);
Parametreler
_MsgId
runtime_object_identity
Ayrılmış message
nesnenin öğesi.
_PTarget
yöntemini çağıran hedef bloğun işaretçisi release
.
Açıklamalar
parametresi _PTarget
NULL
ise yöntemi bir invalid_argument özel durumu oluşturur.
parametresi _PTarget
çağrılan reserve
hedefi temsil etmiyorsa yöntemi bir bad_target özel durumu oluşturur.
release_message
Türetilmiş bir sınıfta geçersiz kılındığında, önceki bir ileti ayırmayı serbest bırakır.
virtual void release_message(runtime_object_identity _MsgId) = 0;
Parametreler
_MsgId
Serbest runtime_object_identity
bırakılan nesnenin message
.
release_ref
Bu source_block
nesne üzerinde bir başvuru sayısı serbest bırakır.
virtual void release_ref(_Inout_ ITarget<_Target_type>* _PTarget);
Parametreler
_PTarget
Bu yöntemi çağıran hedef bloğun işaretçisi.
Açıklamalar
Bu yöntem, bu kaynaktan bağlantısı kaldırılan bir ITarget
nesne tarafından çağrılır. Kaynak bloğunun hedef blok için ayrılmış tüm kaynakları serbest bırakmasına izin verilir.
remove_targets
Bu kaynak bloğun tüm hedef bağlantılarını kaldırır. Bu, yıkıcıdan çağrılmalıdır.
void remove_targets();
Rezerv
Daha önce bu source_block
nesne tarafından sunulan bir iletiyi ayırır.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Target_type>* _PTarget);
Parametreler
_MsgId
runtime_object_identity
Sunulan message
nesnenin öğesi.
_PTarget
yöntemini çağıran hedef bloğun işaretçisi reserve
.
İade Değeri
true
ileti başarıyla ayrılmışsa, false
aksi takdirde. Rezervasyonlar, ileti zaten ayrılmış veya başka bir hedef tarafından kabul edilmiş, kaynak rezervasyonları reddedebilir vb. gibi birçok nedenden dolayı başarısız olabilir.
Açıklamalar
parametresi _PTarget
NULL
ise yöntemi bir invalid_argument özel durumu oluşturur.
çağrısı reserve
yaptıktan sonra, başarılı olursa, sırasıyla iletiyi almak veya release
ele geçirmemek için ya da consume
aramanız gerekir.
reserve_message
Türetilmiş bir sınıfta geçersiz kılındığında, bu source_block
nesne tarafından daha önce sunulan bir iletiyi ayırır.
virtual bool reserve_message(runtime_object_identity _MsgId) = 0;
Parametreler
_MsgId
runtime_object_identity
Ayrılan nesnenin message
öğesi.
İade Değeri
true
ileti başarıyla ayrılmışsa, false
aksi takdirde.
Açıklamalar
çağrıldıktan sonrareserve
, döndürüyorsatrue
consume
, iletinin sahipliğini almak veya release
yayınlamak için çağrılmalıdır.
resume_propagation
Türetilmiş bir sınıfta geçersiz kılındığında, rezervasyon yayımlandıktan sonra yayılmaya devam eder.
virtual void resume_propagation() = 0;
Source_block
Bir source_block
nesne oluşturur.
source_block();
~Source_block
Nesneyi yok eder source_block
.
virtual ~source_block();
sync_send
İletileri zaman uyumlu bir şekilde kuyruğa alır ve bu henüz yapılmadıysa bir yayma görevi başlatır.
virtual void sync_send(_Inout_opt_ message<_Target_type>* _Msg);
Parametreler
_Msg
Zaman uyumlu bir şekilde gönderilecek nesne message
işaretçisi.
unlink_target
Bir hedef bloğun bu source_block
nesneyle bağlantısını kaldırır.
virtual void unlink_target(_Inout_ ITarget<_Target_type>* _PTarget);
Parametreler
_PTarget
Bu source_block
nesnenin bağlantısını kaldırmak için bir ITarget
bloğun işaretçisi.
Açıklamalar
parametresi _PTarget
NULL
ise yöntemi bir invalid_argument özel durumu oluşturur.
unlink_target_notification
Bir hedefin bu source_block
nesneyle bağlantısının kaldırıldığını bildiren geri çağırma.
virtual void unlink_target_notification(_Inout_ ITarget<_Target_type>* _PTarget);
Parametreler
_PTarget
Bağlantısı ITarget
kaldırılan blok.
unlink_targets
Bu source_block
nesnenin tüm hedef bloklarının bağlantısını kaldırır.
virtual void unlink_targets();
wait_for_outstanding_async_sends
Tüm zaman uyumsuz yaymaların tamamlanmasını bekler. Bu yayıcıya özgü döndürme beklemesi, tüm zaman uyumsuz yaymaların bloğu yok etmeden önce bitmesi gereken zamana sahip olduğundan emin olmak için ileti bloklarının yıkıcılarında kullanılır.
void wait_for_outstanding_async_sends();
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin