Implement NNG event system, fix deadlock, and add NNGDebug config

pull/20/head
Dave Behnke 1 month ago
parent 20e3c8a7a8
commit 9cc9d2dd81

@ -127,6 +127,7 @@ CConfigure::CConfigure()
data[g_Keys.dashboard.nngaddr] = "tcp://127.0.0.1:5555";
data[g_Keys.dashboard.interval] = 10U;
data[g_Keys.dashboard.enable] = false;
data[g_Keys.dashboard.debug] = false;
data[g_Keys.ysf.ysfreflectordb.id] = 0U;
}
@ -510,6 +511,8 @@ bool CConfigure::ReadData(const std::string &path)
data[g_Keys.dashboard.nngaddr] = value;
else if (0 == key.compare("Interval"))
data[g_Keys.dashboard.interval] = getUnsigned(value, "Dashboard Interval", 1, 3600, 10);
else if (0 == key.compare("NNGDebug"))
data[g_Keys.dashboard.debug] = IS_TRUE(value[0]);
else
badParam(key);
break;

@ -72,6 +72,6 @@ struct SJsonKeys {
struct FILES { const std::string pid, xml, json, white, black, interlink, terminal; }
files { "pidFilePath", "xmlFilePath", "jsonFilePath", "whitelistFilePath", "blacklistFilePath", "interlinkFilePath", "g3TerminalFilePath" };
struct DASHBOARD { const std::string enable, nngaddr, interval; }
dashboard { "DashboardEnable", "DashboardNNGAddr", "DashboardInterval" };
struct DASHBOARD { const std::string enable, nngaddr, interval, debug; }
dashboard { "DashboardEnable", "DashboardNNGAddr", "DashboardInterval", "NNGDebug" };
};

@ -23,6 +23,12 @@
#include "M17Packet.h"
#include "Global.h"
////////////////////////////////////////////////////////////////////////////////////////
// constructor
CM17Protocol::CM17Protocol() : CSEProtocol()
{
}
////////////////////////////////////////////////////////////////////////////////////////
// operation
@ -413,3 +419,15 @@ void CM17Protocol::EncodeM17Packet(SM17Frame &frame, const CDvHeaderPacket &Head
frame.streamid = Header.GetStreamId(); // no host<--->network byte swapping since we never do any math on this value
// the CRC will be set in HandleQueue, after lich.dest is set
}
bool CM17Protocol::EncodeDvHeaderPacket(const CDvHeaderPacket &packet, CBuffer &buffer) const
{
packet.EncodeInterlinkPacket(buffer);
return true;
}
bool CM17Protocol::EncodeDvFramePacket(const CDvFramePacket &packet, CBuffer &buffer) const
{
packet.EncodeInterlinkPacket(buffer);
return true;
}

@ -1,4 +1,5 @@
#include "NNGPublisher.h"
#include "Global.h"
#include <iostream>
CNNGPublisher::CNNGPublisher()
@ -54,7 +55,8 @@ void CNNGPublisher::Publish(const nlohmann::json &event)
return;
}
std::string msg = event.dump();
std::cout << "NNG debug: Attempting to publish message of size " << msg.size() << ": " << msg << std::endl;
if (g_Configure.GetBoolean(g_Keys.dashboard.debug))
std::cout << "NNG debug: Attempting to publish message of size " << msg.size() << ": " << msg << std::endl;
int rv = nng_send(m_sock, (void *)msg.c_str(), msg.size(), NNG_FLAG_NONBLOCK);
if (rv == 0) {
std::cout << "NNG: Published event: " << event["type"] << std::endl;

@ -278,6 +278,7 @@ void CReflector::CloseStream(std::shared_ptr<CPacketStream> stream)
// dashboard event
GetUsers()->Closing(stream->GetUserCallsign(), GetStreamModule(stream), stream->GetOwnerClient()->GetProtocol());
ReleaseUsers();
std::cout << "Closing stream of module " << GetStreamModule(stream) << std::endl;
}

@ -478,7 +478,7 @@ bool CYsfProtocol::IsValidDvHeaderPacket(const CIp &Ip, const CYSFFICH &Fich, co
sz[YSF_CALLSIGN_LENGTH] = 0;
CCallsign rpt1 = CCallsign((const char *)sz);
rpt1.SetCSModule(YSF_MODULE_ID);
CCallsign rpt2 = m_ReflectorCallsign;
CCallsign rpt2 = g_Reflector.GetCallsign();
// as YSF protocol does not provide a module-tranlatable
// destid, set module to none and rely on OnDvHeaderPacketIn()
// to later fill it with proper value
@ -531,7 +531,7 @@ bool CYsfProtocol::IsValidDvFramePacket(const CIp &Ip, const CYSFFICH &Fich, con
sz[YSF_CALLSIGN_LENGTH] = 0;
CCallsign rpt1 = CCallsign((const char *)sz);
rpt1.SetCSModule(YSF_MODULE_ID);
CCallsign rpt2 = m_ReflectorCallsign;
CCallsign rpt2 = g_Reflector.GetCallsign();
rpt2.SetCSModule(' ');
header = std::unique_ptr<CDvHeaderPacket>(new CDvHeaderPacket(csMY, CCallsign("CQCQCQ"), rpt1, rpt2, uiStreamId, Fich.getFN()));

Loading…
Cancel
Save

Powered by TurnKey Linux.