Aracılığıyla paylaş


dönüştürücü Sınıfı

Mesajlaşma transformer bloğu, tek türde iletileri kabul edebilen ve farklı türde sınırsız sayıda iletiyi depolayabilen tek hedefli, çok kaynaklı propagator_block bir bloktır.

Sözdizimi

template<class _Input, class _Output>
class transformer : public propagator_block<single_link_registry<ITarget<_Output>>,
    multi_link_registry<ISource<_Input>>>;

Parametreler

_Giriş
Arabellek tarafından kabul edilen iletilerin yük türü.

_Çıkış
Arabellek tarafından depolanan ve yayılan iletilerin yük türü.

Üyeler

Ortak Oluşturucular

Ad Tanım
Trafo Aşırı yüklendi. Bir transformer mesajlaşma bloğu oluşturur.
~transformatör Yıkıcı Mesajlaşma bloğunu transformer yok eder.

Korumalı Yöntemler

Ad Tanım
accept_message Bu transformer mesajlaşma bloğu tarafından sunulan bir iletiyi kabul eder ve sahipliği arayana aktarır.
consume_message Daha önce tarafından sunulan ve hedef tarafından transformer ayrılmış bir iletiyi kullanır ve sahipliğini arayana aktarır.
link_target_notification Bu transformer mesajlaşma bloğuna yeni bir hedefin bağlandığını bildiren geri arama.
propagate_message Bir bloktan ISource gelen iletiyi zaman uyumsuz olarak bu transformer 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 Transformatör işlevini giriş iletilerinde yürütür.
release_message Önceki ileti rezervasyonlarını yayınlar. (Geçersiz kılmalar source_block::release_message.)
reserve_message Daha önce bu transformer 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 transformer 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

Daha fazla bilgi için bkz . Zaman Uyumsuz İleti Blokları.

Devralma Hiyerarşisi

Isource

Itarget

Source_block

Propagator_block

transformer

Gereksinimler

Üst bilgi: agents.h

Ad alanı: eşzamanlılık

accept_message

Bu transformer mesajlaşma bloğu tarafından sunulan bir iletiyi kabul eder ve sahipliği arayana aktarır.

virtual message<_Output>* accept_message(runtime_object_identity _MsgId);

Parametreler

_MsgId
runtime_object_identity Sunulan message nesnenin öğesi.

İade Değeri

Çağıranın message artık sahip olduğu nesnenin işaretçisi.

consume_message

Daha önce tarafından sunulan ve hedef tarafından transformer ayrılmış bir iletiyi kullanır ve sahipliğini arayana aktarır.

virtual message<_Output>* consume_message(runtime_object_identity _MsgId);

Parametreler

_MsgId
runtime_object_identity Tüketilen nesnenin message sayısı.

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

Bu transformer mesajlaşma bloğuna yeni bir hedefin bağlandığını bildiren geri arama.

virtual void link_target_notification(_Inout_ ITarget<_Output> *);

propagate_message

Bir bloktan ISource gelen iletiyi zaman uyumsuz olarak bu transformer 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<_Input>* _PMessage,
    _Inout_ ISource<_Input>* _PSource);

Parametreler

_PMessage
Nesnenin işaretçisi message .

_PSource
İletiyi sunan kaynak bloğun işaretçisi.

İade Değeri

Hedefin iletiyle ne yapmaya karar verdiklerine ilişkin message_status bir gösterge.

propagate_to_any_targets

Transformatör işlevini giriş iletilerinde yürütür.

virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);

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

İ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

Rezervasyon yayımlandıktan sonra yayılmaya devam eder.

virtual void resume_propagation();

send_message

Bir bloktan gelen iletiyi zaman uyumlu bir ISource şekilde bu transformer 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<_Input>* _PMessage,
    _Inout_ ISource<_Input>* _PSource);

Parametreler

_PMessage
Nesnenin işaretçisi message .

_PSource
İletiyi sunan kaynak bloğun işaretçisi.

İade 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();

İade Değeri

true çünkü blok, sunulan iletileri ertelemez.

Trafo

Bir transformer mesajlaşma bloğu oluşturur.

transformer(
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget = NULL);

transformer(
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget,
    filter_method const& _Filter);

transformer(
    Scheduler& _PScheduler,
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget = NULL);

transformer(
    Scheduler& _PScheduler,
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget,
    filter_method const& _Filter);

transformer(
    ScheduleGroup& _PScheduleGroup,
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget = NULL);

transformer(
    ScheduleGroup& _PScheduleGroup,
    _Transform_method const& _Func,
    _Inout_opt_ ITarget<_Output>* _PTarget,
    filter_method const& _Filter);

Parametreler

_Func
Kabul edilen her ileti için çağrılacak bir işlev.

_PTarget
Transformatörle bağlantı oluşturmak için hedef bloğun işaretçisi.

_Filtre
Sunulan iletilerin kabul edilip edilmeyeceğini belirleyen bir filtre işlevi.

_PScheduler
Scheduler İleti bloğu için yayma görevinin transformer zamanlandığı nesne.

_PScheduleGroup
ScheduleGroup İleti bloğu için yayma görevinin transformer 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ü_Transform_method, bir iletiyi işlemek için bu transformer mesajlaşma bloğu tarafından çağrılan imzalı _Output (_Input const &) bir functor'dır.

Türüfilter_method, sunulan bir iletiyi kabul edip etmemesi gerektiğini belirlemek için bu transformer mesajlaşma bloğu tarafından çağrılan imzalı bool (_Input const &) bir functor'dır.

~Trafo

Mesajlaşma bloğunu transformer yok eder.

~transformer();

Ayrıca bkz.

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