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
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.
link_target_notification
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üyorsatrue
consume
, 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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin