Aracılığıyla paylaş


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

Isource

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 _PTargetNULLise 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 _PTargetNULLise 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ı.

İ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.

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 _PTargetNULLise yöntemi bir invalid_argument özel durumu oluşturur.

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 _PTargetNULLise 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();

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 _PTargetNULLise 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.

İade 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.

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 _PTargetNULLise yöntemi bir invalid_argument özel durumu oluşturur.

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.

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.

Eşzamanlılık Ad Alanı
ISource Sınıfı