}
SMUX_SETTINGS::SMUX_SETTINGS()
- : ip(0),
- port(0)
+ : errorStr(),
+ ip(0),
+ port(0),
+ password()
{}
int SMUX_SETTINGS::ParseSettings(const MODULE_SETTINGS & s)
services(NULL),
corporations(NULL),
traffcounter(NULL),
+ errorStr(),
+ smuxSettings(),
+ settings(),
+ thread(),
+ mutex(),
running(false),
stopped(true),
sock(-1),
printfd(__FILE__, "SMUX::Stop() - Before\n");
running = false;
-ResetNotifiers();
-
if (!stopped)
{
//5 seconds to thread stops itself
pthread_join(thread, NULL);
+ResetNotifiers();
+
+ {
+ Tables::iterator it;
+ for (it = tables.begin(); it != tables.end(); ++it)
+ delete it->second;
+ }
+ {
+ Sensors::iterator it;
+ for (it = sensors.begin(); it != sensors.end(); ++it)
+ delete it->second;
+ }
+
+tables.erase(tables.begin(), tables.end());
+sensors.erase(sensors.begin(), sensors.end());
+
close(sock);
printfd(__FILE__, "SMUX::Stop() - After\n");
return 0;
}
+int SMUX::Reload()
+{
+if (Stop())
+ return -1;
+if (Start())
+ return -1;
+return 0;
+}
+
void * SMUX::Runner(void * d)
{
+sigset_t signalSet;
+sigfillset(&signalSet);
+pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
+
SMUX * smux = static_cast<SMUX *>(d);
smux->Run();
void SMUX::Run()
{
-SendOpenPDU(sock);
-SendRReqPDU(sock);
+stopped = true;
+if (!SendOpenPDU(sock))
+ return;
+if (!SendRReqPDU(sock))
+ return;
running = true;
stopped = false;