Classe source_block

La classe source_block è una classe base astratta per blocchi di sola origine. La classe fornisce funzionalità di gestione dei collegamenti di base come controlli dell'errore comune.

template<
   class _TargetLinkRegistry,
   class _MessageProcessorType = ordered_message_processor<typename _TargetLinkRegistry::type::type>
>
class source_block : public ISource<typename _TargetLinkRegistry::type::type>;

Parametri

  • _TargetLinkRegistry
    Registro di sistema dei collegamenti da utilizzare per il mantenimento dei collegamenti di destinazione.

  • _MessageProcessorType
    Tipo di processore per elaborazione del messaggio.

Membri

Typedef pubblici

Nome

Oggetto di descrizione

target_iterator

Iteratore per mostrare le destinazioni connesse.

Costruttori pubblici

Nome

Oggetto di descrizione

Costruttore source_block::source_block

Costruisce un oggetto source_block.

Distruttore source_block::~source_block

Elimina l'oggetto source_block.

Metodi pubblici

Nome

Oggetto di descrizione

Metodo source_block::accept

Accetta un messaggio offerto dall'oggetto source_block, trasferendo la proprietà al chiamante.

Metodo source_block::acquire_ref

Acquisisce un conteggio dei riferimenti su questo oggetto source_block, per impedire eliminazione.

Metodo source_block::consume

Utilizza un messaggio precedentemente offerto da questo oggetto source_block e riservato correttamente dalla destinazione trasferendo la proprietà al chiamante.

Metodo source_block::link_target

Connette un blocco di destinazione al blocco dell'oggetto source_block.

Metodo source_block::release

Consente di rilasciare una prenotazione corretta del messaggio precedente.

Metodo source_block::release_ref

Consente di rilasciare un conteggio dei riferimenti su tale oggetto source_block.

Metodo source_block::reserve

Consente di riservare un messaggio messo a disposizione in precedenza da tale oggetto source_block.

Metodo source_block::unlink_target

Consente di scollegare un blocco di destinazione dall'oggetto source_block.

Metodo source_block::unlink_targets

Consente di scollegare tutti i blocchi di destinazione dall'oggetto source_block. (Esegue l'override di ISource::unlink_targets.)

Metodi protetti

Nome

Oggetto di descrizione

Metodo source_block::accept_message

Quando sottoposto a override in una classe derivata, accetta un messaggio proposto dall'origine. I blocchi del messaggio devono eseguire l'override di questo metodo per convalidare _MsgId e restituire un messaggio.

Metodo source_block::async_send

Consente di mettere in coda in modo asincrono i messaggi e avviare un'attività di propagazione, se questa non è già stata eseguita

Metodo source_block::consume_message

Quando sottoposto a override in una classe derivata, utilizza un messaggio precedentemente riservato.

Metodo source_block::initialize_source

Inizializza l'opzione message_propagator all'interno di questo source_block.

Metodo source_block::link_target_notification

Un callback che notifica che una nuova destinazione è stata collegata a questo oggetto source_block.

Metodo source_block::propagate_to_any_targets

Quando sottoposto a override in una classe derivata, propaga il messaggio specificato a una o tutte le destinazioni collegate. Si tratta della routine di propagazione principale per i blocchi di messaggio.

Metodo source_block::release_message

Quando sottoposto a override in una classe derivata, rilascia un precedente prenotazione del messaggio.

Metodo source_block::remove_targets

Consente di rimuovere tutti i collegamenti di destinazione per tale blocco di origine. Deve essere chiamato dal distruttore.

Metodo source_block::reserve_message

Quando sottoposto a override in una classe derivata, riserva un messaggio precedentemente proposto dall'oggetto source_block.

Metodo source_block::resume_propagation

Quando sottoposto a override in una classe derivata, riprende la propagazione dopo che è stata rilasciata una prenotazione.

Metodo source_block::sync_send

Consente di mettere in coda in modo sincrono i messaggi e avviare un'attività di propagazione, se questa non è già stata eseguita.

Metodo source_block::unlink_target_notification

Callback che notifica che una destinazione è stata scollegata dall'oggetto source_block.

Metodo source_block::wait_for_outstanding_async_sends

Consente di attendere il completamento di tutte le propagazioni asincrone. Si utilizza l'attesa della rotazione specifica del propagatore nei distruttori di blocchi del messaggio per assicurarsi che tutte le propagazioni asincrone abbiano il tempo di terminare prima della distruzione del blocco.

Note

I blocchi del messaggio devono derivare da questo blocco per beneficiare della gestione di collegamenti e della sincronizzazione fornite da questa classe.

Gerarchia di ereditarietà

ISource

source_block

Requisiti

Header: agents.h

Spazio dei nomi: Concurrency

Vedere anche

Riferimenti

Spazio dei nomi Concurrency

Classe ISource