target_block Sınıfı

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

ITarget

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.

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

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.

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.

Ayrıca bkz.

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