DTNMA Reference Tools v2.1.0 - 13.gc5c0bac
Delay-Tolerant Networking Management Architecture (DTNMA) Tool Suite
Loading...
Searching...
No Matches
nm_rest.c File Reference
#include "nm_rest.h"
#include <cace/ari/text_util.h>
#include <cace/ari/cbor.h>
#include <cace/ari/text.h>
#include <cace/util/logging.h>
#include <cace/util/defs.h>
#include <m-bstring.h>
#include <cjson/cJSON.h>
#include <civetweb.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
+ Include dependency graph for nm_rest.c:

Macros

#define REQUEST_BODY_CHUNK   4096
 Chunking size for receiving request bodies.
 
#define BASE_API_URI   "/nm/api"
 
#define VERSION_URI   BASE_API_URI "/version$"
 
#define AGENTS_URI   BASE_API_URI "/agents$"
 
#define AGENTS_IDX_PREFIX   BASE_API_URI "/agents/idx/"
 
#define AGENTS_EID_PREFIX   BASE_API_URI "/agents/eid/"
 

Functions

static int requireContentType (struct mg_connection *conn, const char *match)
 
static int readRequstBody (struct mg_connection *conn, m_bstring_t data)
 
static size_t SendJSON (struct mg_connection *conn, const cJSON *json_obj)
 
static int log_message (const struct mg_connection *conn, const char *message)
 
static int versionHandler (struct mg_connection *conn, void *cbdata)
 
static int agentsGetHandler (struct mg_connection *conn)
 
static int agentsPostHandler (struct mg_connection *conn)
 
static int agentsHandler (struct mg_connection *conn, void *cbdata)
 
static int agentParseHex (struct mg_connection *conn, cace_ari_list_t tosend)
 
static int agentParseText (struct mg_connection *conn, cace_ari_list_t tosend)
 
static int agentSendItems (struct mg_connection *conn, refdm_agent_t *agent, cace_ari_list_t tosend)
 
static int agentShowTextReports (struct mg_connection *conn, refdm_agent_t *agent)
 
static int agentShowHexReports (struct mg_connection *conn, refdm_agent_t *agent)
 
static int getSegmentDecoded (struct mg_connection *conn, const char *prefix, m_string_t seg)
 
static int getAgentFromEid (struct mg_connection *conn, const char *prefix, refdm_agent_t **agent)
 
static int getFormParam (struct mg_connection *conn, char *form, size_t form_len)
 
static int agentAnySendHandler (struct mg_connection *conn, refdm_agent_t *agent)
 The .
 
static int agentEidSendHandler (struct mg_connection *conn, void *cbdata)
 Handler /agents/eid/$eid/send - Send EXECSET encoded according to query key "form".
 
static int agentEidClearReportsHandler (struct mg_connection *conn, void *cbdata)
 Handler /agents/eid/$eid/clear_reports - Clear all received reports for this agent.
 
static int agentAnyReportsHandler (struct mg_connection *conn, refdm_agent_t *agent)
 The .
 
static int agentEidReportsHandler (struct mg_connection *conn, void *cbdata)
 Handler /agents/eid/$eid/reports/hex - Retrieve array of reports in CBOR-encoded HEX form.
 
static int getAgentFromIdx (struct mg_connection *conn, const char *prefix, refdm_agent_t **agent)
 
static int agentIdxSendHandler (struct mg_connection *conn, void *cbdata)
 Handler /agents/idx/$idx/hex - Send HEX-encoded CBOR Command (hex string as request body).
 
static int agentIdxClearReportsHandler (struct mg_connection *conn, void *cbdata)
 Handler /agents/idx/$idx/clear_reports - Clear all received reports for this agent.
 
static int agentIdxReportsHandler (struct mg_connection *conn, void *cbdata)
 Handler /agents/idx/$idx/reports/hex - Retrieve array of reports in CBOR-encoded HEX form.
 
int refdm_nm_rest_start (struct mg_context **ctx, refdm_mgr_t *mgr)
 Begin operation of the REST service.
 
void refdm_nm_rest_stop (struct mg_context *ctx)
 Stop operation of the REST service.
 

Variables

static const char * uri_seg_sep = "/?#"
 Characters disallowed in URI segments (per RFC 3986) to know where they end.
 

Macro Definition Documentation

◆ AGENTS_EID_PREFIX

#define AGENTS_EID_PREFIX   BASE_API_URI "/agents/eid/"

◆ AGENTS_IDX_PREFIX

#define AGENTS_IDX_PREFIX   BASE_API_URI "/agents/idx/"

◆ AGENTS_URI

#define AGENTS_URI   BASE_API_URI "/agents$"

◆ BASE_API_URI

#define BASE_API_URI   "/nm/api"

◆ REQUEST_BODY_CHUNK

#define REQUEST_BODY_CHUNK   4096

Chunking size for receiving request bodies.

◆ VERSION_URI

#define VERSION_URI   BASE_API_URI "/version$"

Function Documentation

◆ agentAnyReportsHandler()

static int agentAnyReportsHandler ( struct mg_connection *  conn,
refdm_agent_t agent 
)
static

The .

/reports resource of either agent form.

References agent, agentShowHexReports(), agentShowTextReports(), getFormParam(), and HTTP_METHOD_NOT_ALLOWED.

Referenced by agentEidReportsHandler(), and agentIdxReportsHandler().

◆ agentAnySendHandler()

static int agentAnySendHandler ( struct mg_connection *  conn,
refdm_agent_t agent 
)
static

◆ agentEidClearReportsHandler()

static int agentEidClearReportsHandler ( struct mg_connection *  conn,
void *  cbdata 
)
static

Handler /agents/eid/$eid/clear_reports - Clear all received reports for this agent.

References agent, AGENTS_EID_PREFIX, CACE_LOG_DEBUG, getAgentFromEid(), HTTP_METHOD_NOT_ALLOWED, HTTP_NO_CONTENT, mgr, and refdm_mgr_clear_reports().

Referenced by refdm_nm_rest_start().

◆ agentEidReportsHandler()

static int agentEidReportsHandler ( struct mg_connection *  conn,
void *  cbdata 
)
static

Handler /agents/eid/$eid/reports/hex - Retrieve array of reports in CBOR-encoded HEX form.

References agent, agentAnyReportsHandler(), AGENTS_EID_PREFIX, CACE_LOG_DEBUG, and getAgentFromEid().

Referenced by refdm_nm_rest_start().

◆ agentEidSendHandler()

static int agentEidSendHandler ( struct mg_connection *  conn,
void *  cbdata 
)
static

Handler /agents/eid/$eid/send - Send EXECSET encoded according to query key "form".

References agent, agentAnySendHandler(), AGENTS_EID_PREFIX, CACE_LOG_DEBUG, and getAgentFromEid().

Referenced by refdm_nm_rest_start().

◆ agentIdxClearReportsHandler()

static int agentIdxClearReportsHandler ( struct mg_connection *  conn,
void *  cbdata 
)
static

Handler /agents/idx/$idx/clear_reports - Clear all received reports for this agent.

References agent, AGENTS_IDX_PREFIX, CACE_LOG_DEBUG, getAgentFromIdx(), HTTP_METHOD_NOT_ALLOWED, HTTP_OK, mgr, and refdm_mgr_clear_reports().

Referenced by refdm_nm_rest_start().

◆ agentIdxReportsHandler()

static int agentIdxReportsHandler ( struct mg_connection *  conn,
void *  cbdata 
)
static

Handler /agents/idx/$idx/reports/hex - Retrieve array of reports in CBOR-encoded HEX form.

References agent, agentAnyReportsHandler(), AGENTS_IDX_PREFIX, CACE_LOG_DEBUG, and getAgentFromIdx().

Referenced by refdm_nm_rest_start().

◆ agentIdxSendHandler()

static int agentIdxSendHandler ( struct mg_connection *  conn,
void *  cbdata 
)
static

Handler /agents/idx/$idx/hex - Send HEX-encoded CBOR Command (hex string as request body).

References agent, agentAnySendHandler(), AGENTS_IDX_PREFIX, CACE_LOG_DEBUG, and getAgentFromIdx().

Referenced by refdm_nm_rest_start().

◆ agentParseHex()

◆ agentParseText()

static int agentParseText ( struct mg_connection *  conn,
cace_ari_list_t  tosend 
)
static

◆ agentSendItems()

◆ agentsGetHandler()

◆ agentsHandler()

static int agentsHandler ( struct mg_connection *  conn,
void *  cbdata 
)
static

◆ agentShowHexReports()

◆ agentShowTextReports()

static int agentShowTextReports ( struct mg_connection *  conn,
refdm_agent_t agent 
)
static

◆ agentsPostHandler()

static int agentsPostHandler ( struct mg_connection *  conn)
static

◆ getAgentFromEid()

static int getAgentFromEid ( struct mg_connection *  conn,
const char *  prefix,
refdm_agent_t **  agent 
)
static

◆ getAgentFromIdx()

static int getAgentFromIdx ( struct mg_connection *  conn,
const char *  prefix,
refdm_agent_t **  agent 
)
static

◆ getFormParam()

static int getFormParam ( struct mg_connection *  conn,
char *  form,
size_t  form_len 
)
static

◆ getSegmentDecoded()

static int getSegmentDecoded ( struct mg_connection *  conn,
const char *  prefix,
m_string_t  seg 
)
static

◆ log_message()

static int log_message ( const struct mg_connection *  conn,
const char *  message 
)
static

References CACE_LOG_INFO.

Referenced by refdm_nm_rest_start().

◆ readRequstBody()

static int readRequstBody ( struct mg_connection *  conn,
m_bstring_t  data 
)
static

◆ refdm_nm_rest_start()

int refdm_nm_rest_start ( struct mg_context **  ctx,
refdm_mgr_t mgr 
)

◆ refdm_nm_rest_stop()

void refdm_nm_rest_stop ( struct mg_context *  ctx)

Stop operation of the REST service.

Parameters
[in]ctxThe context to stop for.
See also
refdm_nm_rest_start()

References CHKVOID.

Referenced by refdm_mgr_stop().

◆ requireContentType()

static int requireContentType ( struct mg_connection *  conn,
const char *  match 
)
static

◆ SendJSON()

static size_t SendJSON ( struct mg_connection *  conn,
const cJSON *  json_obj 
)
static

Referenced by agentsGetHandler(), and versionHandler().

◆ versionHandler()

static int versionHandler ( struct mg_connection *  conn,
void *  cbdata 
)
static

Variable Documentation

◆ uri_seg_sep

const char* uri_seg_sep = "/?#"
static

Characters disallowed in URI segments (per RFC 3986) to know where they end.

Referenced by getSegmentDecoded().