Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
target_block sınıfı, temel bağlantı yönetimi işlevselliği ve yalnızca hedef bloklar için hata denetimi sağlayan soyut bir temel sınıftır.
Sözdizimi
template<class _SourceLinkRegistry, class _MessageProcessorType = ordered_message_processor<typename _SourceLinkRegistry::type::source_type>>
class target_block : public ITarget<typename _SourceLinkRegistry::type::source_type>;
Parametreler
_SourceLinkRegistry
Kaynak bağlantıları tutmak için kullanılacak bağlantı kayıt defteri.
_MessageProcessorType
İleti işleme için işlemci türü.
Üyeler
Genel Tür Tanımları
| Veri Akışı Adı | Açıklama |
|---|---|
source_iterator |
Bu target_block nesnesi için source_link_manager'nin iterator türü. |
Ortak Oluşturucular
| Veri Akışı Adı | Açıklama |
|---|---|
| target_block | Bir target_block nesne oluşturur. |
| ~target_block Yıkıcı Fonksiyon |
target_block nesnesini yok eder. |
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| Yaymak | Bir kaynak bloktan gelen iletiyi zaman uyumsuz olarak bu hedef bloğa geçirir. |
| Gönder | Bir kaynak bloktan gelen iletiyi zaman uyumlu bir şekilde bu hedef bloğa geçirir. |
Korumalı Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| async_send | İşlenmek üzere zaman uyumsuz olarak bir ileti gönderir. |
| gelen mesajları reddet | Blokta yeni iletilerin reddedilmesi gerektiğini gösterir. |
| toplu_işlemeyi_etkinleştir | Bu blok için toplu işlemeyi etkinleştirir. |
| initialize_target | Temel nesneyi başlatır. Özellikle, nesnenin message_processor başlatılması gerekir. |
| link_source | Belirtilen kaynak bloğu bu target_block nesneye bağlar. |
| process_input_messages | Giriş olarak alınan iletileri işler. |
| process_message | Türetilmiş bir sınıfta geçersiz kılındığında, bu target_block nesne tarafından kabul edilen bir iletiyi işler. |
| propagate_message | Türetilmiş bir sınıfta geçersiz kılındığında, bu yöntem bir ISource bloktaki iletiyi asenkron olarak bu target_block nesneye geçirir.
propagate yöntemi, bir kaynak bloğu tarafından çağrıldığında çalıştırılır. |
| register_filter | Alınan her iletide çağrılacak bir filtre yöntemini kaydeder. |
| kaynakları_kaldır | Asenkron gönderme işlemlerinin tamamlanmasını bekledikten sonra tüm kaynakların bağlantılarını kaldırıyor. |
| send_message | Bir türetilmiş sınıfta geçersiz kılındığında, bu yöntem ISource bloğundan bu target_block nesnesine senkronize bir şekilde mesaj iletir.
send yöntemi, bir kaynak bloğu tarafından çağrıldığında çalıştırılır. |
| sync_send | İşlenmek üzere eşzamanlı olarak bir mesaj gönderin. |
| unlink_source | Belirtilen kaynak bloğun bu target_block nesneyle bağlantısını kaldırır. |
| kaynakları_bağlantısızlaştır | Bu target_block nesnenin tüm kaynak bloklarının bağlantısını kaldırır. (Geçersiz Kılmalar ITarget::unlink_sources.) |
| wait_for_async_sends | Tüm düzensiz yaymaların tamamlanmasını bekler. |
Devralma Hiyerarşisi
target_block
Gereksinimler
Üst bilgi: agents.h
Ad alanı: eşzamanlılık
async_send
İşlenmek üzere zaman uyumsuz olarak bir ileti gönderir.
void async_send(_Inout_opt_ message<_Source_type>* _PMessage);
Parametreler
_PMessage
Gönderilen mesajın bellekteki işaretçisi.
gelen mesajları reddet
Blokta yeni iletilerin reddedilmesi gerektiğini gösterir.
void decline_incoming_messages();
Açıklamalar
Bu yöntem, yok etme işlemi devam ederken yeni iletilerin reddedildiğinden emin olmak için yıkıcı tarafından çağrılır.
toplu_işlemeyi_etkinleştir
Bu blok için toplu işlemeyi etkinleştirir.
void enable_batched_processing();
hedefi_başlat
Temel nesneyi başlatır. Özellikle, nesnenin message_processor başlatılması gerekir.
void initialize_target(
_Inout_opt_ Scheduler* _PScheduler = NULL,
_Inout_opt_ ScheduleGroup* _PScheduleGroup = NULL);
Parametreler
_PScheduler
Görevleri zamanlamak için kullanılacak zamanlayıcı.
_PScheduleGroup
Görevleri zamanlamak için kullanılacak zamanlama grubu.
bağlantı_kaynağı
Belirtilen kaynak bloğu bu target_block nesneye bağlar.
virtual void link_source(_Inout_ ISource<_Source_type>* _PSource);
Parametreler
_PSource
Bağlanması gereken bloğun ISource işaretçisi.
Açıklamalar
Bu işlev doğrudan bir target_block nesne üzerinde çağrılmamalıdır. Bloklar, ISource blokları üzerindeki link_source yöntemi kullanılarak ve böylece ilgili hedefte link_target yöntemini çağıracak şekilde birbirine bağlanmalıdır.
girdi_mesajlarını_işle
Giriş olarak alınan iletileri işler.
virtual void process_input_messages(_Inout_ message<_Source_type>* _PMessage);
Parametreler
_PMessage
İşlenecek mesaja ait gösterici.
process_message
Türetilmiş bir sınıfta geçersiz kılındığında, bu target_block nesne tarafından kabul edilen bir iletiyi işler.
virtual void process_message(message<_Source_type> *);
yaymak
Bir kaynak bloktan gelen iletiyi zaman uyumsuz olarak bu hedef bloğa geçirir.
virtual message_status propagate(
_Inout_opt_ message<_Source_type>* _PMessage,
_Inout_opt_ ISource<_Source_type>* _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.
Açıklamalar
Yöntem, ya _PMessage ya da _PSource parametresi NULL ise bir invalid_argument özel durumu oluşturur.
propagate_message
Türetilmiş bir sınıfta geçersiz kılındığında, bu yöntem bir ISource bloktaki iletiyi asenkron olarak bu target_block nesneye 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<_Source_type>* _PMessage,
_Inout_ ISource<_Source_type>* _PSource) = 0;
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.
register_filter
Alınan her iletide çağrılacak bir filtre yöntemini kaydeder.
void register_filter(filter_method const& _Filter);
Parametreler
_Filtre
Filtre yöntemi.
kaynakları_kaldır
Asenkron gönderme işlemlerinin tamamlanmasını bekledikten sonra tüm kaynakların bağlantılarını kaldırıyor.
void remove_sources();
Açıklamalar
Tüm hedef bloklar, yıkıcı fonksiyonlarında kaynakları kaldırmak için bu yordamı çağırmalıdır.
Gönder
Bir kaynak bloktan gelen iletiyi zaman uyumlu bir şekilde bu hedef bloğa geçirir.
virtual message_status send(
_Inout_ message<_Source_type>* _PMessage,
_Inout_ ISource<_Source_type>* _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.
Açıklamalar
Yöntem, ya _PMessage ya da _PSource parametresi NULL ise bir invalid_argument özel durumu oluşturur.
send İleti başlatma dışında yönteminin kullanılması ve iletilerin bir ağ içinde yayılması tehlikelidir ve kilitlenmeye yol açabilir.
send döndüğünde, ileti ya kabul edilip hedef bloğa aktarılmış ya da hedef tarafından reddedilmiştir.
mesaj_gönder
Bir türetilmiş sınıfta geçersiz kılındığında, bu yöntem ISource bloğundan bu target_block nesnesine senkronize bir şekilde mesaj iletir.
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<_Source_type> *,
_Inout_ ISource<_Source_type> *);
Dönüş Değeri
Hedefin iletiyle ne yapmaya karar verdiğine dair bir message_status göstergesi.
Açıklamalar
Varsayılan olarak, türetilmiş bir sınıfça geçersiz kılınmadığı sürece bu blok declined döndürür.
sync_send
İşlenmek üzere eşzamanlı olarak bir mesaj gönderin.
void sync_send(_Inout_opt_ message<_Source_type>* _PMessage);
Parametreler
_PMessage
Gönderilen mesajın bellekteki işaretçisi.
target_block
Bir target_block nesne oluşturur.
target_block();
~target_block
target_block nesnesini yok eder.
virtual ~target_block();
kaynağın bağlantısını kaldır
Belirtilen kaynak bloğun bu target_block nesneyle bağlantısını kaldırır.
virtual void unlink_source(_Inout_ ISource<_Source_type>* _PSource);
Parametreler
_PSource
Bağlantısının ISource kaldırılacağı bloğun işaretçisi.
kaynakların_bağlantısını_kaldır
Bu target_block nesnenin tüm kaynak bloklarının bağlantısını kaldırır.
virtual void unlink_sources();
wait_for_async_sends
Tüm düzensiz yaymaların tamamlanmasını bekler.
void wait_for_async_sends();
Açıklamalar
Bu yöntem, bloğu yok etmeden önce tüm zaman uyumsuz işlemlerin bitmesi için zaman olduğundan emin olmak için ileti bloğu yıkıcıları tarafından kullanılır.