Classe transformer
Un blocco della messaggistica transformer
è un propagator_block
multi-origine, a destinazione singola, che può accettare messaggi di un tipo ed è in grado di archiviare un numero non associato di messaggi di un tipo diverso.
Sintassi
template<class _Input, class _Output>
class transformer : public propagator_block<single_link_registry<ITarget<_Output>>,
multi_link_registry<ISource<_Input>>>;
Parametri
_Immissione
Tipo di payload dei messaggi accettati dal buffer.
_Prodotto
Tipo di payload dei messaggi archiviati e propagati dal buffer.
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
trasformatore | Con overload. Costruisce un blocco della messaggistica transformer . |
Distruttore ~transformer | Elimina definitivamente il transformer blocco di messaggistica. |
Metodi protetti
Nome | Descrizione |
---|---|
accept_message | Accetta un messaggio offerto da questo transformer blocco di messaggistica, trasferendo la proprietà al chiamante. |
consume_message | Utilizza un messaggio offerto in precedenza da transformer e riservato dalla destinazione, trasferendo la proprietà al chiamante. |
link_target_notification | Callback che notifica che una nuova destinazione è stata collegata a questo transformer blocco di messaggistica. |
propagate_message | Passa in modo asincrono un messaggio da un ISource blocco a questo transformer blocco di messaggistica. Viene richiamato dal propagate metodo , quando viene chiamato da un blocco di origine. |
propagate_to_any_targets | Esegue la funzione del trasformatore nei messaggi di input. |
release_message | Rilascia una prenotazione di messaggi precedente. (Esegue l'override di source_block::release_message. |
reserve_message | Riserva un messaggio offerto in precedenza da questo transformer blocco di messaggistica. Esegue l'override di source_block::reserve_message. |
resume_propagation | Riprende la propagazione dopo il rilascio di una prenotazione. (Esegue l'override di source_block::resume_propagation. |
send_message | Passa in modo sincrono un messaggio da un ISource blocco a questo transformer blocco di messaggistica. Viene richiamato dal send metodo , quando viene chiamato da un blocco di origine. |
supports_anonymous_source | Esegue l'override del metodo supports_anonymous_source per indicare che questo blocco può accettare messaggi offerti da un'origine non collegata. (sostituzioni )ITarget::supports_anonymous_source.) |
Osservazioni:
Per altre informazioni, vedere Blocchi di messaggi asincroni.
Gerarchia di ereditarietà
transformer
Requisiti
Intestazione: agents.h
Spazio dei nomi: Concurrency
accept_message
Accetta un messaggio offerto da questo transformer
blocco di messaggistica, trasferendo la proprietà al chiamante.
virtual message<_Output>* accept_message(runtime_object_identity _MsgId);
Parametri
_MsgId
Oggetto runtime_object_identity
dell'oggetto offerto message
.
Valore restituito
Puntatore all'oggetto message
di cui il chiamante ha ora la proprietà.
consume_message
Utilizza un messaggio offerto in precedenza da transformer
e riservato dalla destinazione, trasferendo la proprietà al chiamante.
virtual message<_Output>* consume_message(runtime_object_identity _MsgId);
Parametri
_MsgId
Oggetto runtime_object_identity
dell'oggetto message
utilizzato.
Valore restituito
Puntatore all'oggetto message
di cui il chiamante ha ora la proprietà.
Osservazioni:
Simile a accept
, ma è sempre preceduto da una chiamata a reserve
.
link_target_notification
Callback che notifica che una nuova destinazione è stata collegata a questo transformer
blocco di messaggistica.
virtual void link_target_notification(_Inout_ ITarget<_Output> *);
propagate_message
Passa in modo asincrono un messaggio da un ISource
blocco a questo transformer
blocco di messaggistica. Viene richiamato dal propagate
metodo , quando viene chiamato da un blocco di origine.
virtual message_status propagate_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parametri
_PMessage
Puntatore all'oggetto message
.
_PSource
Puntatore al blocco di origine che offre il messaggio.
Valore restituito
Un message_status'indicazione di ciò che la destinazione ha deciso di fare con il messaggio.
propagate_to_any_targets
Esegue la funzione del trasformatore nei messaggi di input.
virtual void propagate_to_any_targets(_Inout_opt_ message<_Output> *);
release_message
Rilascia una prenotazione di messaggi precedente.
virtual void release_message(runtime_object_identity _MsgId);
Parametri
_MsgId
Oggetto runtime_object_identity
dell'oggetto message
da rilasciare.
reserve_message
Riserva un messaggio offerto in precedenza da questo transformer
blocco di messaggistica.
virtual bool reserve_message(runtime_object_identity _MsgId);
Parametri
_MsgId
Oggetto runtime_object_identity
dell'oggetto message
riservato.
Valore restituito
true
se il messaggio è stato riservato correttamente, false
in caso contrario.
Osservazioni:
Dopo reserve
la chiamata, se restituisce true
, consume
o release
deve essere chiamato per accettare o rilasciare la proprietà del messaggio.
resume_propagation
Riprende la propagazione dopo il rilascio di una prenotazione.
virtual void resume_propagation();
send_message
Passa in modo sincrono un messaggio da un ISource
blocco a questo transformer
blocco di messaggistica. Viene richiamato dal send
metodo , quando viene chiamato da un blocco di origine.
virtual message_status send_message(
_Inout_ message<_Input>* _PMessage,
_Inout_ ISource<_Input>* _PSource);
Parametri
_PMessage
Puntatore all'oggetto message
.
_PSource
Puntatore al blocco di origine che offre il messaggio.
Valore restituito
Un message_status'indicazione di ciò che la destinazione ha deciso di fare con il messaggio.
supports_anonymous_source
Esegue l'override del metodo supports_anonymous_source
per indicare che questo blocco può accettare messaggi offerti da un'origine non collegata.
virtual bool supports_anonymous_source();
Valore restituito
true
poiché il blocco non posticipa i messaggi offerti.
trasformatore
Costruisce un blocco della messaggistica transformer
.
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);
Parametri
_Func
Funzione che verrà richiamata per ogni messaggio accettato.
_PTarget
Puntatore a un blocco di destinazione da collegare con il trasformatore.
_Filtro
Funzione di filtro che determina se i messaggi offerti devono essere accettati.
_PScheduler
Oggetto Scheduler
all'interno del quale è pianificata l'attività di propagazione per il blocco della messaggistica transformer
.
_PScheduleGroup
Oggetto ScheduleGroup
all'interno del quale è pianificata l'attività di propagazione per il blocco della messaggistica transformer
. L'oggetto Scheduler
usato è previsto dal gruppo di pianificazione.
Osservazioni:
Se non si specificano i parametri _PScheduler
o _PScheduleGroup
, il runtime usa l'utilità di pianificazione predefinita.
Il tipo _Transform_method
è un funtore con firma _Output (_Input const &)
richiamato da questo transformer
blocco di messaggistica per elaborare un messaggio.
Il tipo filter_method
è un funtore con firma bool (_Input const &)
che viene richiamato da questo transformer
blocco di messaggistica per determinare se deve accettare o meno un messaggio offerto.
~trasformatore
Elimina definitivamente il transformer
blocco di messaggistica.
~transformer();