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.
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 _PMessageyazar.
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üyorsatrueconsume, 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_bufferileti gelene kadar bekler.
Ayrıca bkz.
Eşzamanlılık Ad Alanı
unbounded_buffer Sınıfı
single_assignment Sınıfı