overwrite_buffer Sınıfı
Mesajlaşma overwrite_buffer
bloğu, tek seferde tek bir iletiyi depolayabilen çok hedefli, çok kaynaklı, sıralı propagator_block
bir bloktır. Yeni iletiler daha önce tutulan iletilerin üzerine yazılır.
Sözdizimi
template<class T>
class overwrite_buffer : public propagator_block<multi_link_registry<ITarget<T>>, multi_link_registry<ISource<T>>>;
Parametreler
T
Arabellek tarafından depolanan ve yayılan iletilerin yük türü.
Üyeler
Ortak Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
overwrite_buffer | Aşırı yüklendi. Bir overwrite_buffer mesajlaşma bloğu oluşturur. |
~overwrite_buffer Yıkıcı | Mesajlaşma bloğunu overwrite_buffer yok eder. |
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
has_value | Bu overwrite_buffer mesajlaşma bloğunun henüz bir değeri olup olmadığını denetler. |
value | İleti bloğunda depolanan iletinin geçerli yüküne overwrite_buffer bir başvuru alır. |
Korumalı Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
accept_message | Bu overwrite_buffer mesajlaşma bloğu tarafından sunulan bir iletiyi kabul eder ve arayana iletinin bir kopyasını döndürür. |
consume_message | Daha önce mesajlaşma bloğu tarafından overwrite_buffer sunulan ve hedef tarafından ayrılan bir iletiyi kullanır ve iletinin bir kopyasını arayana döndürür. |
link_target_notification | Bu overwrite_buffer mesajlaşma bloğuna yeni bir hedefin bağlandığını bildiren geri arama. |
propagate_message | Bir bloktan ISource gelen iletiyi zaman uyumsuz olarak bu overwrite_buffer mesajlaşma bloğuna geçirir. Bir kaynak bloğu tarafından çağrıldığında yöntemi tarafından propagate çağrılır. |
propagate_to_any_targets | message _PMessage öğesini bu overwrite_buffer mesajlaşma bloğuna yerleştirir ve tüm bağlantılı hedeflere sunar. |
release_message | Önceki ileti rezervasyonlarını yayınlar. (Geçersiz kılmalar source_block::release_message.) |
reserve_message | Daha önce bu overwrite_buffer mesajlaşma bloğu tarafından sunulan bir iletiyi ayırır. (Geçersiz kılmalar source_block::reserve_message.) |
resume_propagation | Rezervasyon yayımlandıktan sonra yayılmaya devam eder. (Geçersiz kılmalar source_block::resume_propagation.) |
send_message | Bir bloktan gelen iletiyi zaman uyumlu bir ISource şekilde bu overwrite_buffer mesajlaşma bloğuna geçirir. Bir kaynak bloğu tarafından çağrıldığında yöntemi tarafından send çağrılır. |
supports_anonymous_source | Bu bloğun supports_anonymous_source bağlı olmayan bir kaynak tarafından sunulan iletileri kabul ettiğini belirtmek için yöntemini geçersiz kılar. (Geçersiz Kılmalar ITarget::supports_anonymous_source.) |
Açıklamalar
Mesajlaşma overwrite_buffer
bloğu, depolanan iletisinin kopyalarını hedeflerinin her birine yayılır.
Daha fazla bilgi için bkz . Zaman Uyumsuz İleti Blokları.
Devralma Hiyerarşisi
overwrite_buffer
Gereksinimler
Üst bilgi: agents.h
Ad alanı: eşzamanlılık
accept_message
Bu overwrite_buffer
mesajlaşma bloğu tarafından sunulan bir iletiyi kabul eder ve arayana iletinin bir kopyasını döndürür.
virtual message<T>* accept_message(runtime_object_identity _MsgId);
Parametreler
_MsgId
runtime_object_identity
Sunulan message
nesnenin öğesi.
Dönüş Değeri
Çağıranın message
artık sahip olduğu nesnenin işaretçisi.
Açıklamalar
Mesajlaşma overwrite_buffer
bloğu, o anda tutulan iletinin sahipliğini aktarmak yerine iletinin kopyalarını hedeflerine döndürür.
consume_message
Daha önce mesajlaşma bloğu tarafından overwrite_buffer
sunulan ve hedef tarafından ayrılan bir iletiyi kullanır ve iletinin bir kopyasını arayana döndürür.
virtual message<T>* consume_message(runtime_object_identity _MsgId);
Parametreler
_MsgId
runtime_object_identity
Tüketilen nesnenin message
sayısı.
Dönüş Değeri
Çağıranın message
artık sahip olduğu nesnenin işaretçisi.
Açıklamalar
benzeridir accept
, ancak her zaman için bir çağrısının reserve
önündedir.
has_value
Bu overwrite_buffer
mesajlaşma bloğunun henüz bir değeri olup olmadığını denetler.
bool has_value() const;
Dönüş Değeri
true
bloğu bir değer aldıysa, false
aksi takdirde.
link_target_notification
Bu overwrite_buffer
mesajlaşma bloğuna yeni bir hedefin bağlandığını bildiren geri arama.
virtual void link_target_notification(_Inout_ ITarget<T>* _PTarget);
Parametreler
_PTarget
Yeni bağlanan hedefe işaret eden bir işaretçi.
~overwrite_buffer
Mesajlaşma bloğunu overwrite_buffer
yok eder.
~overwrite_buffer();
overwrite_buffer
Bir overwrite_buffer
mesajlaşma bloğu oluşturur.
overwrite_buffer();
overwrite_buffer(
filter_method const& _Filter);
overwrite_buffer(
Scheduler& _PScheduler);
overwrite_buffer(
Scheduler& _PScheduler,
filter_method const& _Filter);
overwrite_buffer(
ScheduleGroup& _PScheduleGroup);
overwrite_buffer(
ScheduleGroup& _PScheduleGroup,
filter_method const& _Filter);
Parametreler
_Filtre
Sunulan iletilerin kabul edilip edilmeyeceğini belirleyen bir filtre işlevi.
_PScheduler
Scheduler
İleti bloğu için yayma görevinin overwrite_buffer
zamanlandığı nesne.
_PScheduleGroup
ScheduleGroup
İleti bloğu için yayma görevinin overwrite_buffer
zamanlandığı nesne. Scheduler
Kullanılan nesne zamanlama grubu tarafından örtülür.
Açıklamalar
veya _PScheduleGroup
parametrelerini belirtmezseniz çalışma zamanı varsayılan zamanlayıcıyı _PScheduler
kullanır.
Türüfilter_method
, sunulan bir iletiyi kabul edip etmemesi gerektiğini belirlemek için bu overwrite_buffer
mesajlaşma bloğu tarafından çağrılan imzalı bool (T const &)
bir functor'dır.
propagate_message
Bir bloktan ISource
gelen iletiyi zaman uyumsuz olarak bu overwrite_buffer
mesajlaşma bloğuna geçirir. Bir kaynak bloğu tarafından çağrıldığında yöntemi tarafından propagate
çağrılır.
virtual message_status propagate_message(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource);
Parametreler
_PMessage
Nesnenin işaretçisi message
.
_PSource
İletiyi sunan kaynak bloğun işaretçisi.
Dönüş Değeri
Hedefin iletiyle ne yapmaya karar verdiklerine ilişkin message_status bir gösterge.
propagate_to_any_targets
message _PMessage
öğesini bu overwrite_buffer
mesajlaşma bloğuna yerleştirir ve tüm bağlantılı hedeflere sunar.
virtual void propagate_to_any_targets(_Inout_ message<T>* _PMessage);
Parametreler
_PMessage
Bunun overwrite_buffer
sahipliğini aldığı bir message
nesnenin işaretçisi.
Açıklamalar
Bu yöntem, içindeki geçerli iletinin overwrite_buffer
üzerine yeni kabul edilen iletiyle _PMessage
yazar.
send_message
Bir bloktan gelen iletiyi zaman uyumlu bir ISource
şekilde bu overwrite_buffer
mesajlaşma bloğuna geçirir. Bir kaynak bloğu tarafından çağrıldığında yöntemi tarafından send
çağrılır.
virtual message_status send_message(
_Inout_ message<T>* _PMessage,
_Inout_ ISource<T>* _PSource);
Parametreler
_PMessage
Nesnenin işaretçisi message
.
_PSource
İletiyi sunan kaynak bloğun işaretçisi.
Dönüş Değeri
Hedefin iletiyle ne yapmaya karar verdiklerine ilişkin message_status bir gösterge.
supports_anonymous_source
Bu bloğun supports_anonymous_source
bağlı olmayan bir kaynak tarafından sunulan iletileri kabul ettiğini belirtmek için yöntemini geçersiz kılar.
virtual bool supports_anonymous_source();
Dönüş Değeri
true
çünkü blok, sunulan iletileri ertelemez.
release_message
Önceki ileti rezervasyonlarını yayınlar.
virtual void release_message(runtime_object_identity _MsgId);
Parametreler
_MsgId
Serbest runtime_object_identity
bırakılan nesnenin message
.
reserve_message
Daha önce bu overwrite_buffer
mesajlaşma bloğu tarafından sunulan bir iletiyi ayırır.
virtual bool reserve_message(runtime_object_identity _MsgId);
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üyorsatrue
consume
, iletinin sahipliğini almak veya release
yayınlamak için çağrılmalıdır.
resume_propagation
Rezervasyon yayımlandıktan sonra yayılmaya devam eder.
virtual void resume_propagation();
değer
İleti bloğunda depolanan iletinin geçerli yüküne overwrite_buffer
bir başvuru alır.
T value();
Dönüş Değeri
Şu anda depolanan iletinin yükü.
Açıklamalar
içinde overwrite_buffer
depolanan değer, bu yöntem döndürdüğünde hemen değişebilir. Bu yöntem, içinde şu anda hiçbir ileti depolanmadıysa overwrite_buffer
ileti gelene kadar bekler.
Ayrıca bkz.
Eşzamanlılık Ad Alanı
unbounded_buffer Sınıfı
single_assignment Sınıfı