Share via


source_block (Clase)

La clase source_block es una clase base abstracta para bloques sólo de origen. La clase proporciona funcionalidad de administración de vínculo básico, así como comprobaciones de errores frecuentes.

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

Parámetros

  • _TargetLinkRegistry
    El Registro del vínculo que se va a usar para retener los vínculos de destino.

  • _MessageProcessorType
    Tipo de procesador para el procesamiento de mensajes.

Miembros

Typedefs públicas

Name

Descripción

target_iterator

El iterador para recorrer los destinos conectados.

Constructores públicos

Name

Descripción

source_block::source_block (Constructor)

Crea un objeto source_block.

source_block::~source_block (Destructor)

Destruye el objeto source_block.

Métodos públicos

Name

Descripción

source_block::accept (Método)

Acepta un mensaje que fue proporcionado por este objeto source_block, transfiriendo la propiedad al llamador.

source_block::acquire_ref (Método)

Adquiere un recuento de referencias en este objeto source_block, para evitar la eliminación.

source_block::consume (Método)

Consume un mensaje que fue proporcionado anteriormente por este objeto source_block y correctamente reservado por el destino, transfiriendo la propiedad al llamador.

source_block::link_target (Método)

Vincula un bloque de destino con este objeto source_block.

source_block::release (Método)

Libera una reserva de mensaje anterior correcta.

source_block::release_ref (Método)

Libera un recuento de referencias en este objeto source_block.

source_block::reserve (Método)

Reserva un mensaje ofrecido previamente por este objeto source_block.

source_block::unlink_target (Método)

Desvincula un bloque de destino de este objeto source_block.

source_block::unlink_targets (Método)

Desvincula todos los bloques de destino desde este objeto source_block. (Invalida ISource::unlink_targets.)

Métodos protegidos

Name

Descripción

source_block::accept_message (Método)

Cuando se invalida en una clase derivada, acepta un mensaje proporcionado por el origen. Los bloques de mensaje deberían invalidar este método para validar _MsgId y devolver un mensaje.

source_block::async_send (Método)

De forma asincrónica, pone en la cola a los mensajes e inicia una tarea de propagación, si esto no se ha hecho ya.

source_block::consume_message (Método)

Cuando se invalida en una clase derivada, consume un mensaje reservado previamente.

source_block::initialize_source (Método)

Inicializa message_propagator dentro de este source_block.

source_block::link_target_notification (Método)

Una devolución de llamada que notifica que se ha vinculado un nuevo destino a este objeto source_block.

source_block::propagate_to_any_targets (Método)

Cuando se invalida en una clase derivada, propaga el mensaje dado a cualquiera o a todos los destinos vinculados. Esta es la rutina de propagación principal para los bloques de mensaje.

source_block::release_message (Método)

Cuando se invalida en una clase derivada, libera una reserva de mensaje anterior.

source_block::remove_targets (Método)

Quita todos los vínculos de destino para este bloque de orígenes. Se debería llamar a esto desde el destructor.

source_block::reserve_message (Método)

Cuando se invalida en una clase derivada, reserva un mensaje ofrecido previamente por este objeto source_block.

source_block::resume_propagation (Método)

Cuando se invalida en una clase derivada, reanuda la propagación después de liberar una reserva.

source_block::sync_send (Método)

De forma sincrónica, pone en la cola a los mensajes e inicia una tarea de propagación, si esto no se ha hecho ya.

source_block::unlink_target_notification (Método)

Una devolución de llamada que notifica que se ha desvinculado un destino de este objeto source_block.

source_block::wait_for_outstanding_async_sends (Método)

Espera a que todas las propagaciones asincrónicas se completen. Esta espera de vuelta específica del propagador se usa en destructores de bloques de mensaje para asegurarse de que todas las propagaciones asincrónicas tienen tiempo para finalizar antes de destruir el bloque.

Comentarios

Los bloques de mensaje deberían derivar de este bloque para aprovechar la administración de vínculos y la sincronización que proporciona esta clase.

Jerarquía de herencia

ISource

source_block

Requisitos

Encabezado: agents.h

Espacio de nombres: Simultaneidad

Vea también

Referencia

Espacio de nombres de simultaneidad

ISource (Clase)