Aracılığıyla paylaş


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

ISource

ITarget

source_block

propagator_block

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.

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ı