Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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ı
| Veri Akışı Adı | Açıklama |
|---|---|
target_iterator |
Bağlı hedeflerin yürümesi için yineleyici. |
Ortak Oluşturucular
| Veri Akışı Adı | Açıklama |
|---|---|
| source_block | Bir source_block nesne oluşturur. |
| ~source_block Yıkıcı | Nesneyi yok eder source_block . |
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| almak | 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üketmek | 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. |
| serbest bırakma | Ö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. |
| ayırmak | 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
| Veri Akışı Adı | Açıklama |
|---|---|
| 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 .
Dönüş Değeri
Çağıranın message artık sahip olduğu nesnenin işaretçisi.
Açıklamalar
parametresi _PTarget NULLise 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.
Dönüş 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 .
Dönüş Değeri
Çağıranın message artık sahip olduğu nesnenin işaretçisi.
Açıklamalar
parametresi _PTarget NULLise yöntemi bir invalid_argument özel durumu oluşturur.
parametresi _PTarget çağrılan reservehedefi temsil etmiyorsa yöntemi bir bad_target özel durumu oluşturur.
consume yöntemi ile acceptbenzerdir, 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ı.
Dönüş 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 NULLise 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.
serbest bırakma
Ö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 NULLise yöntemi bir invalid_argument özel durumu oluşturur.
parametresi _PTarget çağrılan reservehedefi 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();
ayırmak
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 .
Dönüş 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 NULLise yöntemi bir invalid_argument özel durumu oluşturur.
çağrısı reserveyaptı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.
Dönüş Değeri
true ileti başarıyla ayrılmışsa, false aksi takdirde.
Açıklamalar
çağrıldıktan sonrareserve, döndürüyorsatrueconsume, 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 NULLise 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();