Referencia de la Clase Agent_Graph::Agent
[Grafos.]
Agente de un grafo.
Más...
Lista de todos los miembros.
|
Tipos públicos |
typedef Agent_Info | Agent_Type |
| El tipo de información que contiene el agente.
|
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 |
| Agent (const Agent_Info &agent_info, Transit __transit) |
| Instancia un agente con información agent_info y función de transito transit.
|
| Agent () |
| Instancia un agente vacío.
|
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.
|
Clases |
struct | Critical_Section |
| Sección crítica del agente. Más...
|
Descripción detallada
template<typename __Node, typename __Arc, typename Agent_Info>
class Aleph::Agent_Graph< __Node, __Arc, Agent_Info >::Agent
Esta clase modeliza un agente que recorre un grafo.
Hay cuatro atributos que maneja un agente:
- Una información arbitraria expresada por el parámetro tipo Agent_Info.
- Un semáforo binario para proteger la información relacionada con el agente.
- Una función de transición que ejecuta el agente para caracterizar el comportamiento dentro del grafo. Tradicionalmente, en esta función se programa cómo el agente decide por cuál arco transitar. La función de transición debe especificarla por el usuario y es llamada por un planificador en la clase Agent_Graph.
- Un puntero opaco no tipeado cookie que permite extender el nodo a que guarde prácticamente cualquier clase de información.
En añadidura, diversos tipos de agentes pueden modelizarse mediante derivación de esta clase. De este modo se pueden especializar clases de agente y manejarse mediante la misma interfaz con la clase base.
Un agente tiene los siguientes estados de ejecución:
- Ready: el agente está en la cola del planificador listo para ser ejecutado.
- Executing: la función de transición del agente está ejecutándose.
- Suspended: el agente está suspendido; esto implica que no está en la cola del planificador.
- Suspending: se emitió una orden de suspensión del agente pero éste estaba en ejecución.
- Deleting_From_Ready: se emitió una orden de eliminar el agente del grafo mientras éste estaba en estado de ejecución.
- Deleting_From_Suspended: se emitió una orden de eliminar el agente del grafo mientras éste está suspendiéndose y su ejecución aún no está culminada.
- Nota:
- Agent es struct por simplicidad de programación en la clase Agent_Graph. Ninguno de sus miembros debe ser directamente accedido, sino mediante la clase Agent_Graph. Los únicos métodos asequibles de Agent_Graph sonj los constructores, que puede pueden ser necesarios para programar agentes derivados.
Definición en la línea 289 del archivo tpl_agent.H.
La documentación para esta clase fue generada a partir del siguiente fichero: