DTNMA Reference Tools v2.4.0 - 0.g737f35c
Delay-Tolerant Networking Management Architecture (DTNMA) Tool Suite
Loading...
Searching...
No Matches
mgr.c File Reference

DM state keeping definitions. More...

#include "mgr.h"
#include "ingress.h"
#include "nm_rest.h"
#include "cace/util/defs.h"
#include "cace/util/logging.h"
#include "cace/util/mutex.h"
#include "nm_sql.h"
+ Include dependency graph for mgr.c:

Functions

static char * refdm_envdup (const char *name)
 Get a copy of a specific environment variable, if defined.
 
void refdm_mgr_init (refdm_mgr_t *mgr)
 Initialize a new manager state with default config.
 
void refdm_mgr_deinit (refdm_mgr_t *mgr)
 Deinitialize the state.
 
int refdm_mgr_start (refdm_mgr_t *mgr)
 Begin the REFDM daemon operation.
 
int refdm_mgr_stop (refdm_mgr_t *mgr)
 End daemon operation.
 
refdm_agent_t * refdm_mgr_agent_add (refdm_mgr_t *mgr, const char *agent_eid, bool *is_new)
 Add a new known agent by its EID URI.
 
refdm_agent_t * refdm_mgr_agent_get_eid (refdm_mgr_t *mgr, const char *eid)
 
refdm_agent_t * refdm_mgr_agent_get_index (refdm_mgr_t *mgr, size_t index)
 
void refdm_mgr_clear_reports (refdm_mgr_t *mgr, refdm_agent_t *agent)
 Clear reports for a specific agent.
 

Detailed Description

DM state keeping definitions.

Function Documentation

◆ refdm_envdup()

static char * refdm_envdup ( const char *  name)
static

Get a copy of a specific environment variable, if defined.

Parameters
[in]nameThe variable name to get.
Returns
A copy of the string, or NULL if no environment is defined.

Referenced by refdm_mgr_init().

◆ refdm_mgr_agent_add()

refdm_agent_t * refdm_mgr_agent_add ( refdm_mgr_t *  mgr,
const char *  agent_eid,
bool *  is_new 
)

Add a new known agent by its EID URI.

Parameters
[in]mgrThe manager to update.
[in]agent_eidThe unique agent EID. Adding short-circuit if the EID already exists in the agent list.
[out]is_newIf provided, will be set to false if the agent was already present and true if it was newly added.
Returns
The new manager, or NULL if adding failed.

References agent, refdm_mgr_t::agent_dict, refdm_mgr_t::agent_list, refdm_mgr_t::agent_log_cfg, refdm_mgr_t::agent_mutex, CACE_LOG_INFO, CACE_MALLOC, CACE_MUTEX_LOCK, CACE_MUTEX_UNLOCK, CHKNULL, mgr, refdm_agent_init(), refdm_agent_rotate_log(), and refdm_db_insert_agent().

Referenced by agentsPostHandler(), refdm_db_load_agents(), and refdm_ingress_worker().

◆ refdm_mgr_agent_get_eid()

refdm_agent_t * refdm_mgr_agent_get_eid ( refdm_mgr_t *  mgr,
const char *  eid 
)

◆ refdm_mgr_agent_get_index()

refdm_agent_t * refdm_mgr_agent_get_index ( refdm_mgr_t *  mgr,
size_t  index 
)

◆ refdm_mgr_clear_reports()

void refdm_mgr_clear_reports ( refdm_mgr_t *  mgr,
refdm_agent_t *  agent 
)

Clear reports for a specific agent.

References agent, refdm_db_clear_rptset(), and refdm_db_fetch_agent_idx().

Referenced by agentEidClearReportsHandler(), and agentIdxClearReportsHandler().

◆ refdm_mgr_deinit()

◆ refdm_mgr_init()

◆ refdm_mgr_start()

int refdm_mgr_start ( refdm_mgr_t *  mgr)

Begin the REFDM daemon operation.

This includes making connection to persistent storage database if compiled with POSTGRESQL_FOUND.

Precondition
The manager must have set values for:
Parameters
[in]mgrThe manager to start.
See also
refdm_mgr_stop()

References CACE_LOG_INFO, cace_threadset_start(), mgr, refdm_db_load_agents(), refdm_db_mgt_init(), refdm_ingress_worker(), refdm_nm_rest_start(), refdm_mgr_t::rest, refdm_mgr_t::sql_info, and refdm_mgr_t::threads.

Referenced by main().

◆ refdm_mgr_stop()

int refdm_mgr_stop ( refdm_mgr_t *  mgr)

End daemon operation.

Precondition
The manager must have been successfully started with refdm_mgr_start().
Parameters
[in]mgrThe manager to stop.

References cace_daemon_run_stop(), cace_threadset_join(), mgr, refdm_nm_rest_stop(), refdm_mgr_t::rest, refdm_mgr_t::running, and refdm_mgr_t::threads.

Referenced by main().