Referencia de la Clase Agent_Graph::Node_to_Node_Agent
[Grafos.]

Agente que transita de nodo a nodo (sin permanecer en los arcos). Más...

Diagrama de herencias de Agent_Graph::Node_to_Node_Agent

Inheritance graph
[leyenda]
Diagrama de colaboración para Agent_Graph::Node_to_Node_Agent:

Collaboration graph
[leyenda]

Lista de todos los miembros.

Tipos públicos

typedef Agent_Info Agent_Type
 El tipo de información que contiene el agente.
typedef bool(* Enter_Node_Fct )(Agent_Graph *, Node *, Node_to_Node_Agent *)
 Modifica estado de nodo destino cuando agente lo ingresa.
typedef Arc *(* Leave_Node_Fct )(Agent_Graph *, Node *, Node_to_Node_Agent *)
 Modifica estado de nodo origen cuando agente lo deja.
typedef void(* Transit )(Agent_Graph *, Agent *, void *)
 Tipo de función de tránsito a invocar cada vez que el agente entra a un componente del grafo. Por componente se entiende un nodo o un arco.

Métodos públicos

void *& get_cookie ()
 Retorna una referencia al cookie del agente.
Agent_Info & get_info ()
 Retorna los atributos asociados al agente.
bool is_in_node ()
 Retorna true si el agente está en un nodo; false si está en un arco.


Descripción detallada

template<typename __Node, typename __Arc, typename Agent_Info>
class Aleph::Agent_Graph< __Node, __Arc, Agent_Info >::Node_to_Node_Agent

Node_to_Node_Agent es un agente especializado cuyo tránsito es atómico entre los nodos. Esta clase de agente no permanece en los arcos; sólo los utiliza para decidir hacia cuál nodo debe dirigirse.

Básicamente, el tránsito de este agente se divide en las siguientes fases:

  1. Tomar el mutex del nodo en donde actualmente reside el agente.
  2. Modificar el estado del nodo y decidir cuál arco tomar. Este paso es realizado por una función provista por el usuario típicamente denominada leave_node(node,agent), la cual es responsable de:
    1. Modificar los atributos del nodo actual de residencia del arco.

Decidir por cual arco debe continuar el agente. Este es el valor de retorno de leave_node(). Si el agente ha culminado su tránsito, entonces se retorna NULL, en cuyo caso el agente es eliminado del sistema.

  1. Con el valor del arco, el manejador toma la sección crítica del nodo destino y:
    1. Mete el agente en el nodo.

Llama a la función enter_node(node,agent) la cual modifica el estado del nodo destino. Si enter_node() retorna false, entonces el agente es eliminado del sistema.

Definición en la línea 489 del archivo tpl_agent.H.


La documentación para esta clase fue generada a partir del siguiente fichero:

Leandro R. León