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

_Input
Buffer tarafından kabul edilen iletilerin yük tipi.

_Output
Arabellek tarafından depolanan ve yayılan iletilerin yük türü.

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
transformer Aşırı yüklü Bir transformer mesajlaşma bloğu oluşturur.
~transformer Mesajlaşma bloğunu transformer yok eder.

Korumalı Yöntemler

Veri Akışı Adı Açıklama
accept_message Bu transformer mesajlaşma bloğu tarafından sunulan bir iletiyi kabul eder ve sahipliği arayana aktarır.
consume_message Hedef tarafından ayrılmış ve daha önce transformer tarafından sunulmuş bir iletiyi tüketir 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 ISource bloktan gelen bir mesajı zaman uyumsuz olarak bu transformer mesajlaşma bloğuna geçirir. propagate yöntemi, bir kaynak bloğu tarafından çağrıldığında çalıştırılır.
propagate_to_any_targets Transformatör işlevini giriş iletilerinde yürütür.
release_message Önceki mesaj rezervasyonunu kaldırır. (Geçersiz kılma 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ılma source_block::reserve_message.)
resume_propagation Rezervasyon serbest bırakıldıktan sonra yayılım yeniden başlar. (Geçersiz kılar source_block::resume_propagation.)
send_message Bir bloktan iletiyi senkronize olarak bu transformer 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

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

consume_message

Daha önce transformer tarafından sunulmuş ve hedef tarafından rezerve edilmiş bir iletiyi tüketir ve bunun 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ı.

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.

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

ISource bloktan gelen bir mesajı zaman uyumsuz olarak bu transformer 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<_Input>* _PMessage,
    _Inout_ ISource<_Input>* _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.

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 mesaj rezervasyonunu kaldırır.

virtual void release_message(runtime_object_identity _MsgId);

Parametreler

_MsgId
Bırakılan message nesnesinin runtime_object_identity serbest.

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.

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

send_message

Bir bloktan iletiyi senkronize olarak bu transformer 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<_Input>* _PMessage,
    _Inout_ ISource<_Input>* _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.

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.

virtual bool supports_anonymous_source();

Dönüş Değeri

true çünkü blok, sunulan iletileri ertelemez.

transformer

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ı kurmak için hedef blok işaretçisi.

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

_PScheduler
Scheduler nesnesi, transformer ileti bloğu için yayma görevinin zamanlandığı yerdir.

_PScheduleGroup
ScheduleGroup nesnesi, transformer 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.

_Transform_method türü, bir iletiyi işlemek için bu mesaj bloğu tarafından çağrılan _Output (_Input const &) imzalı bir işlevsel ara birimdir (functor).

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

~transformer

Mesajlaşma bloğunu transformer yok eder.

~transformer();

Ayrıca bkz.

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