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üklü 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 Mesajlaşma bloğunda şu anda depolanan mesajın 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 overwrite_buffer mesajlaşma bloğu tarafından sunulan ve hedef tarafından ayrılan bir iletiyi tüketir ve ileti kopyasını arayana geri döndürür.
link_hedef_bildirim Bu overwrite_buffer mesajlaşma bloğuna yeni bir hedefin bağlandığını bildiren geri arama.
propagate_message ISource bloktan gelen bir mesajı zaman uyumsuz olarak bu overwrite_buffer mesajlaşma bloğuna geçirir. propagate yöntemi, bir kaynak bloğu tarafından çağrıldığında çalıştırılır.
herhangi_bir_hedefe_yay message _PMessage öğesini bu overwrite_buffer mesajlaşma bloğuna yerleştirir ve tüm bağlantılı hedeflere sunar.
yayın_mesajı Önceki mesaj rezervasyonunu kaldırır. (Geçersiz kılmalar source_block::release_message.)
rezerv_mesajı Daha önce bu overwrite_buffer mesajlaşma bloğu tarafından sunulan bir iletiyi ayırır. (Geçersiz kılar source_block::reserve_message.)
resume_propagation Rezervasyon serbest bırakıldıktan sonra yayılım yeniden başlar. (Geçersiz kılmalar source_block::resume_propagation.)
send_message Bir bloktan iletiyi senkronize olarak bu overwrite_buffer mesajlaşma bloğuna geçirir. send yöntemi, bir kaynak bloğu tarafından çağrıldığında çalıştırılır.
supports_anonymous_source Bağlı olmayan bir kaynak tarafından sunulan iletileri kabul edebileceğini belirtmek için supports_anonymous_source yöntemini geçersiz kılar. (Geçersiz Kılmalar ITarget::supports_anonymous_source.)

Açıklamalar

Mesajlaşma overwrite_buffer bloku, depolanan iletisinin kopyalarını hedeflerinin her birine iletir.

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

kabul_mesaji

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
Sunulan message nesnesinin runtime_object_identity.

Dönüş Değeri

Çağıranın artık sahip olduğu message nesnesine ait bir işaretçi.

Açıklamalar

Mesajlaşma overwrite_buffer bloğu, o anda tutulan iletinin sahipliğini aktarmak yerine iletinin kopyalarını hedeflerine döndürür.

mesaj tüket

Daha önce overwrite_buffer mesajlaşma bloğu tarafından sunulan ve hedef tarafından ayrılan bir iletiyi tüketir ve ileti kopyasını arayana geri 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 artık sahip olduğu message nesnesine ait bir işaretçi.

Açıklamalar

Bu, accept'ye benzer, ancak her zaman reserve çağrısından önce gelir.

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ğlantı yapılan 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 nesnesi, overwrite_buffer ileti bloğu için yayma görevinin zamanlandığı yerdir.

_PScheduleGroup
ScheduleGroup nesnesi, overwrite_buffer ileti bloğu için yayma görevinin zamanlandığı yerdir. Scheduler kullanılan nesne zamanlama grubuyla belirtilir.

Açıklamalar

_PScheduler veya _PScheduleGroup parametrelerini belirtmezseniz çalışma zamanı varsayılan zamanlayıcıyı kullanır.

Tür filter_method, imzalı bool (T const &) olan bir functor olup, bu overwrite_buffer mesajlaşma bloğu tarafından sunulan bir mesajı kabul edip etmemesi gerektiğini belirlemek için çağrılır.

propagate_message

ISource bloktan gelen bir mesajı zaman uyumsuz olarak bu overwrite_buffer mesajlaşma bloğuna geçirir. propagate yöntemi, bir kaynak bloğu tarafından çağrıldığında çalıştı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 verdiğine dair bir message_status göstergesi.

herhangi_bir_hedefe_yaymak

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 message sahipliğini aldığı bir overwrite_buffer nesnenin işaretçisi.

Açıklamalar

Bu yöntem, overwrite_buffer içindeki geçerli mesajı yeni kabul edilen mesaj _PMessage ile değiştirir.

mesaj_gönder

Bir bloktan iletiyi senkronize olarak bu overwrite_buffer mesajlaşma bloğuna geçirir. send yöntemi, bir kaynak bloğu tarafından çağrıldığında çalıştı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 verdiğine dair bir message_status göstergesi.

anonim_kaynağı_destekler

Bağlı olmayan bir kaynak tarafından sunulan iletileri kabul edebileceğini belirtmek için supports_anonymous_source yöntemini geçersiz kılar.

virtual bool supports_anonymous_source();

Dönüş Değeri

true çünkü blok, sunulan iletileri ertelemez.

sürüm_mesajı

Önceki mesaj rezervasyonunu kaldırır.

virtual void release_message(runtime_object_identity _MsgId);

Parametreler

_MsgId
Bırakılan message nesnesinin runtime_object_identity serbest.

rezerve_mesajı

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

Rezervasyon serbest bırakıldıktan sonra yayılım yeniden başlar.

virtual void resume_propagation();

değer

Mesajlaşma bloğunda şu anda depolanan mesajın 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ı