The Assimilation Project
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
cmalib.c
Go to the documentation of this file.
1 
25 #include <projectcommon.h>
26 #include <string.h>
27 #include <cmalib.h>
28 #include <frameset.h>
29 #include <intframe.h>
30 #include <ipportframe.h>
31 #include <cstringframe.h>
32 #include <frametypes.h>
33 #include <cmalib.h>
34 
35 
41 FrameSet*
43  , guint16 msgtype
44  , NetAddr* addrs
45  , int addrcount)
46 {
47  FrameSet* ret = frameset_new(msgtype);
48  int count = 0;
49 
50  // Put the heartbeat interval in the message (if asked)
51  if (config->getint(config, CONFIGNAME_HBTIME) > 0) {
52  gint hbtime = config->getint(config, CONFIGNAME_HBTIME);
54  intf->setint(intf, hbtime);
55  frameset_append_frame(ret, &intf->baseclass);
56  UNREF2(intf);
57  }
58  // Put the heartbeat deadtime in the message (if asked)
59  if (config->getint(config, CONFIGNAME_DEADTIME) > 0) {
60  gint deadtime = config->getint(config, CONFIGNAME_DEADTIME);
62  intf->setint(intf, deadtime);
63  frameset_append_frame(ret, &intf->baseclass);
64  UNREF2(intf);
65  }
66  // Put the heartbeat warntime in the message (if asked)
67  if (config->getint(config, CONFIGNAME_WARNTIME) > 0) {
68  gint warntime = config->getint(config, CONFIGNAME_WARNTIME);
70  intf->setint(intf, warntime);
71  frameset_append_frame(ret, &intf->baseclass);
72  UNREF2(intf);
73  }
74 
75  // Put all the addresses we were given in the message.
76  for (count=0; count < addrcount; ++count) {
77  IpPortFrame* hbaddr = ipportframe_netaddr_new(FRAMETYPE_IPPORT, &addrs[count]);
78  frameset_append_frame(ret, &hbaddr->baseclass);
79  UNREF2(hbaddr);
80  }
81  return ret;
82 }
83 
84 
90 FrameSet*
92 {
94  char* json;
95  CstringFrame* jsframe;
96 
97  if (!cfg || !cfg->_values) {
98  g_warning("%s.%d: NULL ConfigContext parameter", __FUNCTION__, __LINE__);
99  return NULL;
100  }
101  json = cfg->baseclass.toString(&cfg->baseclass);
102  if (json == NULL) {
103  g_warning("%s.%d: Invalid ConfigContext parameter", __FUNCTION__, __LINE__);
104  return NULL;
105  }
107  jsframe->baseclass.setvalue(&jsframe->baseclass, json
108  , strlen(json)+1, frame_default_valuefinalize);
109  frameset_append_frame(fs, &jsframe->baseclass);
110  UNREF2(jsframe);
111 
112  return fs;
113 }