|
DTNMA Reference Tools v2.1.0 - 13.gc5c0bac
Delay-Tolerant Networking Management Architecture (DTNMA) Tool Suite
|
#include "instr.h"#include "msgdata.h"#include "exec_seq.h"#include "rpt_agg.h"#include "timeline.h"#include "acl.h"#include "alarms.h"#include <cace/util/daemon_run.h>#include <cace/util/threadset.h>#include <cace/amm/obj_ns.h>#include <cace/amm/obj_store.h>#include <cace/amm/msg_if.h>#include <m-buffer.h>#include <pthread.h>
Include dependency graph for agent.h:
This graph shows which files directly or indirectly include this file:Data Structures | |
| struct | refda_agent_t |
| State of a DTNMA Agent. More... | |
Macros | |
| #define | REFDA_AGENT_ERR_LOCK_FAILED 2 |
| Error result when agent locking fails. | |
| #define | AGENT_QUEUE_SIZE 1024 |
| Size of agent hand-off queues. | |
| #define | REFDA_AGENT_LOCK(agent, err) |
| Lock the object mutex on an agent and return if failed. | |
| #define | REFDA_AGENT_UNLOCK(agent, err) |
| Unlock the object mutex on an agent and return if failed. | |
Functions | |
| void | refda_agent_init (refda_agent_t *agent) |
| void | refda_agent_deinit (refda_agent_t *agent) |
| int | refda_agent_nowtime (refda_agent_t *agent, cace_ari_t *val) |
| Store the current timestamp in an ARI. | |
| cace_amm_obj_desc_t * | refda_agent_get_object (refda_agent_t *agent, cace_ari_int_id_t org_id, cace_ari_int_id_t model_id, cace_ari_type_t type_id, cace_ari_int_id_t obj_id) |
| Lookup a specific registered object by reference. | |
| cace_amm_type_t * | refda_agent_get_typedef (refda_agent_t *agent, cace_ari_int_id_t org_id, cace_ari_int_id_t model_id, cace_ari_int_id_t obj_id) |
| Lookup a specific known TYPEDEF by reference. | |
| int | refda_agent_bindrefs (refda_agent_t *agent) |
| After all ADMs are registered, bind cross-references between them. | |
| int | refda_agent_init_objs (refda_agent_t *agent) |
| After all ADMs are registered, finish object initialization. | |
| int | refda_agent_start (refda_agent_t *agent) |
| Called to start worker threads. | |
| int | refda_agent_stop (refda_agent_t *agent) |
| Called to join worker threads. | |
| int | refda_agent_startup_exec (refda_agent_t *agent, cace_ari_t *target) |
| Queue a startup macro to be executed after worker threads are running. | |
| void | refda_agent_enable_exec (refda_agent_t *agent) |
| Enable ingress processing after work threads are started and all startup is completed. | |
| #define AGENT_QUEUE_SIZE 1024 |
Size of agent hand-off queues.
| #define REFDA_AGENT_ERR_LOCK_FAILED 2 |
Error result when agent locking fails.
| #define REFDA_AGENT_LOCK | ( | agent, | |
| err | |||
| ) |
Lock the object mutex on an agent and return if failed.
| #define REFDA_AGENT_UNLOCK | ( | agent, | |
| err | |||
| ) |
Unlock the object mutex on an agent and return if failed.
| int refda_agent_bindrefs | ( | refda_agent_t * | agent | ) |
After all ADMs are registered, bind cross-references between them.
| [in,out] | agent | The agent state to update. |
References refda_agent_t::acl, agent, CACE_ARI_TYPE_IDENT, cace_ari_type_to_name(), CACE_LOG_DEBUG, CACE_LOG_INFO, CACE_LOG_WARNING, refda_agent_t::expr_type, refda_agent_t::mac_type, cace_amm_obj_ns_t::model_id, cace_amm_idseg_val_t::name, cace_amm_obj_store_t::ns_list, cace_amm_obj_desc_t::obj_id, cace_amm_obj_ns_ctr_t::obj_list, cace_amm_obj_ns_t::object_types, refda_agent_t::objs, cace_amm_obj_ns_t::org_id, refda_acl_t::perm_base, refda_acl_t::perm_produce, REFDA_ADM_IETF_AMM_BASE_ENUM_ADM, REFDA_ADM_IETF_AMM_BASE_ENUM_OBJID_TYPEDEF_EXPR, REFDA_ADM_IETF_AMM_BASE_ENUM_OBJID_TYPEDEF_MAC, REFDA_ADM_IETF_AMM_BASE_ENUM_OBJID_TYPEDEF_RPTT, REFDA_ADM_IETF_DTNMA_AGENT_ACL_ENUM_ADM, REFDA_ADM_IETF_DTNMA_AGENT_ACL_ENUM_OBJID_IDENT_PERMISSION, REFDA_ADM_IETF_DTNMA_AGENT_ACL_ENUM_OBJID_IDENT_PRODUCE, REFDA_ADM_IETF_ENUM, REFDA_AGENT_ERR_LOCK_FAILED, refda_agent_get_object(), refda_agent_get_typedef(), REFDA_AGENT_LOCK, REFDA_AGENT_UNLOCK, refda_binding_obj(), refda_agent_t::rptt_type, and refda_binding_ctx_t::store.
Referenced by main(), suite_adms_init(), suite_adms_init(), suite_adms_init(), suite_adms_init(), suite_adms_init(), and suiteSetUp().
| void refda_agent_deinit | ( | refda_agent_t * | agent | ) |
References refda_agent_t::acl, refda_agent_t::acl_mutex, agent, refda_agent_t::agent_eid, refda_agent_t::alarms, cace_amm_obj_store_deinit(), cace_daemon_run_cleanup(), refda_agent_t::exec_next_pid, refda_agent_t::exec_state, refda_agent_t::exec_state_mutex, refda_agent_t::exec_timeline, refda_agent_t::execs, refda_agent_t::execs_sem, refda_agent_t::instr, refda_agent_t::objs, refda_agent_t::objs_mutex, refda_agent_t::odm_names, refda_acl_deinit(), refda_alarms_deinit(), refda_instr_deinit(), refda_agent_t::rptgs, refda_agent_t::rptgs_sem, refda_agent_t::running, and refda_agent_t::threads.
Referenced by main(), and suiteTearDown().
| void refda_agent_enable_exec | ( | refda_agent_t * | agent | ) |
Enable ingress processing after work threads are started and all startup is completed.
| [in] | agent | The agent to send from. |
| [in] | target | The target to execute. This object is moved from. |
References agent, CACE_LOG_INFO, refda_agent_t::execs_enable, and refda_agent_t::execs_sem.
Referenced by main().
| cace_amm_obj_desc_t * refda_agent_get_object | ( | refda_agent_t * | agent, |
| cace_ari_int_id_t | org_id, | ||
| cace_ari_int_id_t | model_id, | ||
| cace_ari_type_t | type_id, | ||
| cace_ari_int_id_t | obj_id | ||
| ) |
Lookup a specific registered object by reference.
| [in] | agent | The agent to search within. |
| org_id | The namespace organization enumeration. | |
| model_id | The namespace model enumeration. | |
| type_id | The object type. | |
| obj_id | The object enumeration. |
References agent, cace_amm_lookup_deinit(), cace_amm_lookup_deref(), cace_amm_lookup_init(), cace_ari_deinit(), CACE_ARI_INIT_UNDEFINED, cace_ari_set_objref_path_intid(), CACE_ARI_TEXT_ENC_OPTS_DEFAULT, cace_ari_text_encode(), CACE_LOG_WARNING, cace_amm_lookup_t::obj, and refda_agent_t::objs.
Referenced by refda_agent_bindrefs(), and refda_agent_get_typedef().
| cace_amm_type_t * refda_agent_get_typedef | ( | refda_agent_t * | agent, |
| cace_ari_int_id_t | org_id, | ||
| cace_ari_int_id_t | model_id, | ||
| cace_ari_int_id_t | obj_id | ||
| ) |
Lookup a specific known TYPEDEF by reference.
| [in] | agent | The agent to search within. |
| org_id | The namespace organization enumeration. | |
| model_id | The namespace model enumeration. | |
| obj_id | The object enumeration. |
References agent, cace_amm_obj_desc_t::app_data, CACE_ARI_TYPE_TYPEDEF, cace_amm_user_data_t::ptr, refda_agent_get_object(), and refda_amm_typedef_desc_t::typeobj.
Referenced by refda_agent_bindrefs().
| void refda_agent_init | ( | refda_agent_t * | agent | ) |
References refda_agent_t::acl, refda_agent_t::acl_mutex, agent, refda_agent_t::agent_eid, AGENT_QUEUE_SIZE, refda_agent_t::alarms, cace_amm_obj_store_init(), cace_daemon_run_init(), refda_agent_t::exec_end, refda_agent_t::exec_next_pid, refda_agent_t::exec_state, refda_agent_t::exec_state_mutex, refda_agent_t::exec_timeline, refda_agent_t::execs, refda_agent_t::execs_enable, refda_agent_t::execs_sem, refda_agent_t::instr, refda_agent_t::objs, refda_agent_t::objs_mutex, refda_agent_t::odm_names, refda_acl_init(), refda_alarms_init(), refda_instr_init(), refda_agent_t::rptgs, refda_agent_t::rptgs_sem, refda_agent_t::running, and refda_agent_t::threads.
Referenced by main(), and suiteSetUp().
| int refda_agent_init_objs | ( | refda_agent_t * | agent | ) |
After all ADMs are registered, finish object initialization.
| [in,out] | agent | The agent state to update. |
References agent, cace_amm_obj_store_t::ns_list, refda_agent_t::objs, REFDA_AGENT_ERR_LOCK_FAILED, refda_agent_init_sbr(), refda_agent_init_tbr(), REFDA_AGENT_LOCK, and REFDA_AGENT_UNLOCK.
Referenced by main().
| int refda_agent_nowtime | ( | refda_agent_t * | agent, |
| cace_ari_t * | val | ||
| ) |
Store the current timestamp in an ARI.
| [in] | agent | The agent context. |
| [in,out] | val | The value to set. This ARI must already be initialized. |
References cace_ari_set_tp(), CACE_LOG_ERR, CHKERR1, and DTN_EPOCH_IN_POSIX.
Referenced by refda_reporting_ctrl(), and refda_reporting_gen().
| int refda_agent_start | ( | refda_agent_t * | agent | ) |
Called to start worker threads.
| [in] | agent | The agent state. |
References agent, CACE_LOG_ERR, CACE_LOG_INFO, cace_threadset_start(), CHKERR1, cace_threadinfo_t::func, refda_agent_t::mif, cace_threadinfo_t::name, cace_amm_msg_if_t::recv, refda_egress_worker(), refda_exec_worker(), refda_ingress_worker(), cace_amm_msg_if_t::send, and refda_agent_t::threads.
Referenced by main().
| int refda_agent_startup_exec | ( | refda_agent_t * | agent, |
| cace_ari_t * | target | ||
| ) |
Queue a startup macro to be executed after worker threads are running.
| [in] | agent | The agent to send from. |
| [in] | target | The target to execute. This object is moved from. |
References agent, cace_ari_deinit(), CACE_LOG_DEBUG, CACE_LOG_ERR, CACE_LOG_INFO, CHKERR1, refda_exec_add_target(), refda_exec_status_deinit(), refda_exec_status_init(), refda_exec_status_wait(), and refda_runctx_from().
Referenced by main().
| int refda_agent_stop | ( | refda_agent_t * | agent | ) |
Called to join worker threads.
This should be called after refda_agent_start().
| [in] | agent | The agent state. |
References agent, cace_daemon_run_stop(), CACE_LOG_INFO, cace_threadset_join(), CHKERR1, refda_agent_t::execs, refda_agent_t::execs_enable, refda_agent_t::execs_sem, refda_agent_t::mif, cace_amm_msg_if_t::recv, refda_msgdata_init(), refda_agent_t::running, and refda_agent_t::threads.
Referenced by main().