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ı hedeflerde gezinmek için iteratör. |
Ortak Oluşturucular
| Veri Akışı Adı | Açıklama |
|---|---|
| source_block | Bir source_block nesne oluşturur. |
| ~source_block Yıkıcı Fonksiyon |
source_block nesnesini yok eder. |
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| kabul etmek | Bu source_block nesne tarafından sunulan ve sahipliğini çağırana aktaran bir iletiyi kabul eder. |
| acquire_ref | Bu source_block nesnesi üzerinde silme işlemini önlemek için bir referans sayısı alır. |
| tüketmek | Daha önce bu source_block nesne tarafından sunulan ve hedef tarafından başarıyla ayrılan bir iletiyi tüketir ve sahipliğini çağırana aktarır. |
| link_target | Hedef bloğu bu source_block nesneye bağlar. |
| yayın | Önceki başarılı bir mesaj rezervasyonunu serbest bırakır. |
| release_ref | Bu source_block nesne üzerinde bir başvuru sayısı serbest bırakır. |
| rezerve etmek | Önceden bu source_block nesne tarafından sunulan bir iletiyi yedekler. |
| 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ı, _MsgId'i doğrulamak ve bir ileti döndürmek 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. |
| toplu_işlemeyi_etkinleştir | Bu blok için toplu işlemeyi etkinleştirir. |
| initialize_source | Bu source_block içinde message_propagator öğesini başlatır. |
| link_hedef_bildirim | 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'tan türeyen yayıcı bloklar için kullanışlıdır. |
| propagate_output_messages | İletileri hedeflere yayma. |
| herhangi_bir_hedefe_yay | Türetilmiş bir sınıfta geçersiz kılındığında, verilen iletiyi bağlantılı hedeflerin herhangi birine veya tümüne yayar. Bu, ileti blokları için ana yayma yordamıdır. |
| yayın_mesajı | Türetilmiş bir sınıfta geçersiz kılındığında, önceki bir ileti ayırmayı iptal eder. |
| hedefleri_kaldır | Bu kaynak bloğun tüm hedef bağlantılarını kaldırır. Bu, destructordan çağrılmalıdır. |
| rezerv_mesajı | 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 serbest bırakıldıktan sonra yayılma işlemine 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. |
| bekleyen_asenkron_göndermeleri_bekle | Tüm düzensiz yaymaların tamamlanmasını bekler. Bu yayıcıya özgü döndürme beklemesi, tüm asenkron yaymaların tamamlanması için yeterli zaman tanındığından emin olmak amacıyla 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
Sunulan message nesnesinin runtime_object_identity.
_PTarget
hedef bloğun accept yöntemini çağıran bir işaretçisi.
Dönüş Değeri
Çağıranın artık sahip olduğu message nesnesine ait bir işaretçi.
Açıklamalar
parametresi _PTargetise yöntemi bir NULL özel durumu oluşturur.
Bir ileti bu accept blok tarafından sunulurken, ISource yöntemi bir hedef tarafından ç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çirilen ileti işaretçisinden farklı olabilir.
kabul_mesaji
Türetilmiş bir sınıfta geçersiz kılındığında, kaynak tarafından sunulan bir iletiyi kabul eder. İleti blokları, _MsgId'i doğrulamak ve bir ileti döndürmek için bu yöntemi geçersiz kılmalıdır.
virtual message<_Target_type>* accept_message(runtime_object_identity _MsgId) = 0;
Parametreler
_MsgId
message nesnesinin çalışma zamanı nesne kimliği.
Dönüş Değeri
Çağıranın artık sahip olduğu bir mesajın işaretçisi.
Açıklamalar
Sahipliği aktarmak için, orijinal mesaj göstericisi geri 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
Bu source_block nesnesi üzerinde silme işlemini önlemek için bir referans sayısı alır.
virtual void acquire_ref(_Inout_ ITarget<_Target_type> *);
Açıklamalar
Bu yöntem, link_target yöntemi sırasında bu kaynağa bağlı olan bir ITarget nesne tarafından çağrılı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
virtual void async_send(_Inout_opt_ message<_Target_type>* _Msg);
Parametreler
_Msg
Zaman uyumsuz olarak gönderilecek bir message nesne işaretçisi.
tüketmek
Daha önce bu source_block nesne tarafından sunulan ve hedef tarafından başarıyla ayrılan bir iletiyi tüketir 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
hedef bloğun consume yöntemini çağıran bir işaretçisi.
Dönüş Değeri
Çağıranın artık sahip olduğu message nesnesine ait bir işaretçi.
Açıklamalar
Parametre _PTargetNULL olduğunda yöntem bir özel durumu fırlatır.
Yöntem, parametrenin çağrıyı yapan hedefi temsil etmediği durumda bir bad_target özel durumu oluşturur.
consume yöntemi accept yöntemine benzer, ancak her zaman true döndüren reserve çağrısından sonra gelmelidir.
mesaj tüket
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 bir mesajın işaretçisi.
Açıklamalar
Bu, accept'ye benzer, ancak her zaman reserve çağrısından önce gelir.
toplu_işlemeyi_etkinleştir
Bu blok için toplu işlemeyi etkinleştirir.
void enable_batched_processing();
initialize_source
Bu source_block içinde message_propagator öğesini 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
ITarget bloğuna bu source_block nesnesine bağlanmak için bir işaretçi.
Açıklamalar
Parametre _PTargetNULL olduğunda yöntem bir özel durumu fırlatır.
bağlantı_hedef_bildirimi
Bu source_block nesneye yeni bir hedefin bağlandığını bildiren bir geri çağırma.
virtual void link_target_notification(_Inout_ ITarget<_Target_type> *);
girdi_mesajlarını_işle
Giriş iletilerini işleme. Bu yalnızca source_block'tan türeyen yayıcı bloklar için kullanışlıdır.
virtual void process_input_messages(_Inout_ message<_Target_type>* _PMessage);
Parametreler
_PMessage
İşlenecek mesaja ait gösterici.
çıkış_mesajlarını_yaymak
İletileri hedeflere yayma.
virtual void propagate_output_messages();
herhangi_bir_hedefe_yaymak
Türetilmiş bir sınıfta geçersiz kılındığında, verilen iletiyi bağlantılı hedeflerin herhangi birine veya tümüne yayar. 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 mesaj rezervasyonunu serbest bırakır.
virtual void release(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Target_type>* _PTarget);
Parametreler
_MsgId
runtime_object_identity Ayrılmış message nesnenin öğesi.
_PTarget
hedef bloğun release yöntemini çağıran bir işaretçisi.
Açıklamalar
Parametre _PTargetNULL olduğunda yöntem bir özel durumu fırlatır.
Yöntem, parametrenin çağrıyı yapan hedefi temsil etmediği durumda bir bad_target özel durumu oluşturur.
sürüm_mesajı
Türetilmiş bir sınıfta geçersiz kılındığında, önceki bir ileti ayırmayı iptal eder.
virtual void release_message(runtime_object_identity _MsgId) = 0;
Parametreler
_MsgId
Bırakılan message nesnesinin runtime_object_identity serbest.
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.
hedefleri_kaldır
Bu kaynak bloğun tüm hedef bağlantılarını kaldırır. Bu, destructordan çağrılmalıdır.
void remove_targets();
ayırmak
Önceden bu source_block nesne tarafından sunulan bir iletiyi yedekler.
virtual bool reserve(
runtime_object_identity _MsgId,
_Inout_ ITarget<_Target_type>* _PTarget);
Parametreler
_MsgId
Sunulan message nesnesinin runtime_object_identity.
_PTarget
hedef bloğun reserve yöntemini çağıran bir işaretçisi.
Dönüş Değeri
true ileti başarıyla rezerve edildiyse, false aksi takdirde. Rezervasyonlar birçok nedenden dolayı başarısız olabilir. Bu nedenler arasında: mesajın zaten ayrılmış olması veya başka bir hedef tarafından kabul edilmesi, kaynağın rezervasyonları reddedebilmesi gibi durumlar yer alır.
Açıklamalar
Parametre _PTargetNULL olduğunda yöntem bir özel durumu fırlatır.
reserve’yı çağırdıktan sonra, başarılı olursa, mesajın sahipliğini almak için consume veya vazgeçmek için release çağrısını yapmanız gerekir.
rezerve_mesajı
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 rezerve edildiyse, false aksi takdirde.
Açıklamalar
reserve çağrıldıktan sonra, eğer true döndürülürse, iletinin sahipliğini almak veya release iletmek için ya consume ya da release çağrılmalıdır.
resume_propagation
Türetilmiş bir sınıfta geçersiz kılındığında, rezervasyon serbest bırakıldıktan sonra yayılma işlemine devam eder.
virtual void resume_propagation() = 0;
source_block
Bir source_block nesne oluşturur.
source_block();
~source_block
source_block nesnesini yok eder.
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.
hedefi_bağlantıdan_ayır
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ğuna işaretçi.
Açıklamalar
Parametre _PTargetNULL olduğunda yöntem bir özel durumu fırlatır.
hedef_bağlantıyı_kaldırma_bildirimi
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ı kaldırılmış olan ITarget blok.
unlink_targets
Bu source_block nesnenin tüm hedef bloklarının bağlantısını kaldırır.
virtual void unlink_targets();
bekle_ürün_async_gönderimler
Tüm düzensiz yaymaların tamamlanmasını bekler. Bu yayıcıya özgü döndürme beklemesi, tüm asenkron yaymaların tamamlanması için yeterli zaman tanındığından emin olmak amacıyla ileti bloklarının yıkıcılarında kullanılır.
void wait_for_outstanding_async_sends();