mirror of
https://github.com/eclipse/paho.mqtt-sn.embedded-c.git
synced 2025-12-16 08:56:51 +01:00
@@ -43,77 +43,77 @@ Gateway::Gateway(void)
|
||||
|
||||
Gateway::~Gateway()
|
||||
{
|
||||
if ( _params.loginId )
|
||||
{
|
||||
free(_params.loginId);
|
||||
}
|
||||
if ( _params.password )
|
||||
{
|
||||
free(_params.password);
|
||||
}
|
||||
if ( _params.gatewayName )
|
||||
{
|
||||
free(_params.gatewayName);
|
||||
}
|
||||
if ( _params.brokerName )
|
||||
{
|
||||
free(_params.brokerName);
|
||||
}
|
||||
if ( _params.port )
|
||||
{
|
||||
free(_params.port);
|
||||
}
|
||||
if ( _params.portSecure )
|
||||
{
|
||||
free(_params.portSecure);
|
||||
}
|
||||
if ( _params.certKey )
|
||||
{
|
||||
free(_params.certKey);
|
||||
}
|
||||
if ( _params.privateKey )
|
||||
{
|
||||
free(_params.privateKey);
|
||||
}
|
||||
if ( _params.rootCApath )
|
||||
{
|
||||
free(_params.rootCApath);
|
||||
}
|
||||
if ( _params.rootCAfile )
|
||||
{
|
||||
free(_params.rootCAfile);
|
||||
}
|
||||
if ( _params.clientListName )
|
||||
{
|
||||
free(_params.clientListName);
|
||||
}
|
||||
if ( _params.predefinedTopicFileName )
|
||||
{
|
||||
free( _params.predefinedTopicFileName);
|
||||
}
|
||||
if ( _params.configName )
|
||||
{
|
||||
free(_params.configName);
|
||||
}
|
||||
if (_params.loginId)
|
||||
{
|
||||
free(_params.loginId);
|
||||
}
|
||||
if (_params.password)
|
||||
{
|
||||
free(_params.password);
|
||||
}
|
||||
if (_params.gatewayName)
|
||||
{
|
||||
free(_params.gatewayName);
|
||||
}
|
||||
if (_params.brokerName)
|
||||
{
|
||||
free(_params.brokerName);
|
||||
}
|
||||
if (_params.port)
|
||||
{
|
||||
free(_params.port);
|
||||
}
|
||||
if (_params.portSecure)
|
||||
{
|
||||
free(_params.portSecure);
|
||||
}
|
||||
if (_params.certKey)
|
||||
{
|
||||
free(_params.certKey);
|
||||
}
|
||||
if (_params.privateKey)
|
||||
{
|
||||
free(_params.privateKey);
|
||||
}
|
||||
if (_params.rootCApath)
|
||||
{
|
||||
free(_params.rootCApath);
|
||||
}
|
||||
if (_params.rootCAfile)
|
||||
{
|
||||
free(_params.rootCAfile);
|
||||
}
|
||||
if (_params.clientListName)
|
||||
{
|
||||
free(_params.clientListName);
|
||||
}
|
||||
if (_params.predefinedTopicFileName)
|
||||
{
|
||||
free(_params.predefinedTopicFileName);
|
||||
}
|
||||
if (_params.configName)
|
||||
{
|
||||
free(_params.configName);
|
||||
}
|
||||
|
||||
if ( _params.qosMinusClientListName )
|
||||
if (_params.qosMinusClientListName)
|
||||
{
|
||||
free(_params.qosMinusClientListName);
|
||||
}
|
||||
|
||||
if ( _adapterManager )
|
||||
if (_adapterManager)
|
||||
{
|
||||
delete _adapterManager;
|
||||
}
|
||||
if ( _clientList )
|
||||
if (_clientList)
|
||||
{
|
||||
delete _clientList;
|
||||
}
|
||||
|
||||
if ( _topics )
|
||||
{
|
||||
delete _topics;
|
||||
}
|
||||
if (_topics)
|
||||
{
|
||||
delete _topics;
|
||||
}
|
||||
// WRITELOG("Gateway is deleted normally.\r\n");
|
||||
}
|
||||
|
||||
@@ -124,256 +124,258 @@ int Gateway::getParam(const char* parameter, char* value)
|
||||
|
||||
char* Gateway::getClientListFileName(void)
|
||||
{
|
||||
return _params.clientListName;
|
||||
return _params.clientListName;
|
||||
}
|
||||
|
||||
char* Gateway::getPredefinedTopicFileName(void)
|
||||
{
|
||||
return _params.predefinedTopicFileName;
|
||||
return _params.predefinedTopicFileName;
|
||||
}
|
||||
|
||||
void Gateway::initialize(int argc, char** argv)
|
||||
{
|
||||
char param[MQTTSNGW_PARAM_MAX];
|
||||
string fileName;
|
||||
char param[MQTTSNGW_PARAM_MAX];
|
||||
string fileName;
|
||||
theGateway = this;
|
||||
|
||||
MultiTaskProcess::initialize(argc, argv);
|
||||
resetRingBuffer();
|
||||
MultiTaskProcess::initialize(argc, argv);
|
||||
resetRingBuffer();
|
||||
|
||||
_params.configDir = *getConfigDirName();
|
||||
_params.configDir = *getConfigDirName();
|
||||
fileName = _params.configDir + *getConfigFileName();
|
||||
_params.configName = strdup(fileName.c_str());
|
||||
|
||||
if (getParam("BrokerName", param) == 0)
|
||||
{
|
||||
_params.brokerName = strdup(param);
|
||||
}
|
||||
if (getParam("BrokerPortNo", param) == 0)
|
||||
{
|
||||
_params.port = strdup(param);
|
||||
}
|
||||
if (getParam("BrokerSecurePortNo", param) == 0)
|
||||
{
|
||||
_params.portSecure = strdup(param);
|
||||
}
|
||||
if (getParam("BrokerName", param) == 0)
|
||||
{
|
||||
_params.brokerName = strdup(param);
|
||||
}
|
||||
if (getParam("BrokerPortNo", param) == 0)
|
||||
{
|
||||
_params.port = strdup(param);
|
||||
}
|
||||
if (getParam("BrokerSecurePortNo", param) == 0)
|
||||
{
|
||||
_params.portSecure = strdup(param);
|
||||
}
|
||||
|
||||
if (getParam("CertKey", param) == 0)
|
||||
{
|
||||
_params.certKey = strdup(param);
|
||||
}
|
||||
if (getParam("PrivateKey", param) == 0)
|
||||
{
|
||||
_params.privateKey = strdup(param);
|
||||
}
|
||||
if (getParam("RootCApath", param) == 0)
|
||||
{
|
||||
_params.rootCApath = strdup(param);
|
||||
}
|
||||
if (getParam("RootCAfile", param) == 0)
|
||||
{
|
||||
_params.rootCAfile = strdup(param);
|
||||
}
|
||||
if (getParam("CertKey", param) == 0)
|
||||
{
|
||||
_params.certKey = strdup(param);
|
||||
}
|
||||
if (getParam("PrivateKey", param) == 0)
|
||||
{
|
||||
_params.privateKey = strdup(param);
|
||||
}
|
||||
if (getParam("RootCApath", param) == 0)
|
||||
{
|
||||
_params.rootCApath = strdup(param);
|
||||
}
|
||||
if (getParam("RootCAfile", param) == 0)
|
||||
{
|
||||
_params.rootCAfile = strdup(param);
|
||||
}
|
||||
|
||||
if (getParam("GatewayID", param) == 0)
|
||||
{
|
||||
_params.gatewayId = atoi(param);
|
||||
}
|
||||
if (getParam("GatewayID", param) == 0)
|
||||
{
|
||||
_params.gatewayId = atoi(param);
|
||||
}
|
||||
|
||||
if (_params.gatewayId == 0 || _params.gatewayId > 255)
|
||||
{
|
||||
throw Exception( "Gateway::initialize: invalid Gateway Id");
|
||||
}
|
||||
if (_params.gatewayId == 0 || _params.gatewayId > 255)
|
||||
{
|
||||
throw Exception("Gateway::initialize: invalid Gateway Id");
|
||||
}
|
||||
|
||||
if (getParam("GatewayName", param) == 0)
|
||||
{
|
||||
_params.gatewayName = strdup(param);
|
||||
}
|
||||
if (getParam("GatewayName", param) == 0)
|
||||
{
|
||||
_params.gatewayName = strdup(param);
|
||||
}
|
||||
|
||||
if (_params.gatewayName == 0 )
|
||||
{
|
||||
throw Exception( "Gateway::initialize: Gateway Name is missing.");
|
||||
}
|
||||
if (_params.gatewayName == 0)
|
||||
{
|
||||
throw Exception("Gateway::initialize: Gateway Name is missing.");
|
||||
}
|
||||
|
||||
_params.mqttVersion = DEFAULT_MQTT_VERSION;
|
||||
if (getParam("MQTTVersion", param) == 0)
|
||||
{
|
||||
_params.mqttVersion = atoi(param);
|
||||
}
|
||||
_params.mqttVersion = DEFAULT_MQTT_VERSION;
|
||||
if (getParam("MQTTVersion", param) == 0)
|
||||
{
|
||||
_params.mqttVersion = atoi(param);
|
||||
}
|
||||
|
||||
_params.maxInflightMsgs = DEFAULT_MQTT_VERSION;
|
||||
if (getParam("MaxInflightMsgs", param) == 0)
|
||||
{
|
||||
_params.maxInflightMsgs = atoi(param);
|
||||
}
|
||||
_params.maxInflightMsgs = DEFAULT_MQTT_VERSION;
|
||||
if (getParam("MaxInflightMsgs", param) == 0)
|
||||
{
|
||||
_params.maxInflightMsgs = atoi(param);
|
||||
}
|
||||
|
||||
_params.keepAlive = DEFAULT_KEEP_ALIVE_TIME;
|
||||
if (getParam("KeepAlive", param) == 0)
|
||||
{
|
||||
_params.keepAlive = atoi(param);
|
||||
}
|
||||
_params.keepAlive = DEFAULT_KEEP_ALIVE_TIME;
|
||||
if (getParam("KeepAlive", param) == 0)
|
||||
{
|
||||
_params.keepAlive = atoi(param);
|
||||
}
|
||||
|
||||
if (getParam("LoginID", param) == 0)
|
||||
{
|
||||
_params.loginId = strdup(param);
|
||||
}
|
||||
if (getParam("LoginID", param) == 0)
|
||||
{
|
||||
_params.loginId = strdup(param);
|
||||
}
|
||||
|
||||
if (getParam("Password", param) == 0)
|
||||
{
|
||||
_params.password = strdup(param);
|
||||
}
|
||||
if (getParam("Password", param) == 0)
|
||||
{
|
||||
_params.password = strdup(param);
|
||||
}
|
||||
|
||||
if (getParam("ClientAuthentication", param) == 0)
|
||||
{
|
||||
if (!strcasecmp(param, "YES"))
|
||||
{
|
||||
_params.clientAuthentication = true;
|
||||
}
|
||||
}
|
||||
if (getParam("ClientAuthentication", param) == 0)
|
||||
{
|
||||
if (!strcasecmp(param, "YES"))
|
||||
{
|
||||
_params.clientAuthentication = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (getParam("ClientsList", param) == 0)
|
||||
{
|
||||
_params.clientListName = strdup(param);
|
||||
}
|
||||
if (getParam("ClientsList", param) == 0)
|
||||
{
|
||||
_params.clientListName = strdup(param);
|
||||
}
|
||||
|
||||
if (getParam("PredefinedTopic", param) == 0)
|
||||
{
|
||||
if ( !strcasecmp(param, "YES") )
|
||||
{
|
||||
_params.predefinedTopic = true;
|
||||
if (getParam("PredefinedTopicList", param) == 0)
|
||||
{
|
||||
_params.predefinedTopicFileName = strdup(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (getParam("PredefinedTopic", param) == 0)
|
||||
{
|
||||
if (!strcasecmp(param, "YES"))
|
||||
{
|
||||
_params.predefinedTopic = true;
|
||||
if (getParam("PredefinedTopicList", param) == 0)
|
||||
{
|
||||
_params.predefinedTopicFileName = strdup(param);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (getParam("AggregatingGateway", param) == 0)
|
||||
{
|
||||
if ( !strcasecmp(param, "YES") )
|
||||
{
|
||||
_params.aggregatingGw = true;
|
||||
}
|
||||
}
|
||||
if (getParam("AggregatingGateway", param) == 0)
|
||||
{
|
||||
if (!strcasecmp(param, "YES"))
|
||||
{
|
||||
_params.aggregatingGw = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (getParam("Forwarder", param) == 0)
|
||||
{
|
||||
if ( !strcasecmp(param, "YES") )
|
||||
{
|
||||
_params.forwarder = true;
|
||||
}
|
||||
}
|
||||
if (getParam("Forwarder", param) == 0)
|
||||
{
|
||||
if (!strcasecmp(param, "YES"))
|
||||
{
|
||||
_params.forwarder = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (getParam("QoS-1", param) == 0)
|
||||
{
|
||||
if ( !strcasecmp(param, "YES") )
|
||||
{
|
||||
_params.qosMinus1 = true;
|
||||
}
|
||||
}
|
||||
if (getParam("QoS-1", param) == 0)
|
||||
{
|
||||
if (!strcasecmp(param, "YES"))
|
||||
{
|
||||
_params.qosMinus1 = true;
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialize adapters */
|
||||
_adapterManager->initialize(_params.gatewayName, _params.aggregatingGw,
|
||||
_params.forwarder, _params.qosMinus1);
|
||||
|
||||
/* Initialize adapters */
|
||||
_adapterManager->initialize( _params.gatewayName, _params.aggregatingGw, _params.forwarder, _params.qosMinus1);
|
||||
|
||||
/* Setup ClientList and Predefined topics */
|
||||
_clientList->initialize(_params.aggregatingGw);
|
||||
/* Setup ClientList and Predefined topics */
|
||||
_clientList->initialize(_params.aggregatingGw);
|
||||
}
|
||||
|
||||
void Gateway::run(void)
|
||||
{
|
||||
/* write prompts */
|
||||
_lightIndicator.redLight(true);
|
||||
WRITELOG("\n%s", PAHO_COPYRIGHT4);
|
||||
WRITELOG("\n%s\n", PAHO_COPYRIGHT0);
|
||||
WRITELOG("%s\n", PAHO_COPYRIGHT1);
|
||||
WRITELOG("%s\n", PAHO_COPYRIGHT2);
|
||||
WRITELOG(" *\n%s\n", PAHO_COPYRIGHT3);
|
||||
WRITELOG(" * Version: %s\n", PAHO_GATEWAY_VERSION);
|
||||
WRITELOG("%s\n", PAHO_COPYRIGHT4);
|
||||
WRITELOG("\n%s %s has been started.\n\n", currentDateTime(), _params.gatewayName);
|
||||
WRITELOG(" ConfigFile: %s\n", _params.configName);
|
||||
_lightIndicator.redLight(true);
|
||||
WRITELOG("\n%s", PAHO_COPYRIGHT4);
|
||||
WRITELOG("\n%s\n", PAHO_COPYRIGHT0);
|
||||
WRITELOG("%s\n", PAHO_COPYRIGHT1);
|
||||
WRITELOG("%s\n", PAHO_COPYRIGHT2);
|
||||
WRITELOG(" *\n%s\n", PAHO_COPYRIGHT3);
|
||||
WRITELOG(" * Version: %s\n", PAHO_GATEWAY_VERSION);
|
||||
WRITELOG("%s\n", PAHO_COPYRIGHT4);
|
||||
WRITELOG("\n%s %s has been started.\n\n", currentDateTime(),
|
||||
_params.gatewayName);
|
||||
WRITELOG(" ConfigFile: %s\n", _params.configName);
|
||||
|
||||
if ( _params.clientListName )
|
||||
{
|
||||
WRITELOG(" ClientList: %s\n", _params.clientListName);
|
||||
}
|
||||
if (_params.clientListName)
|
||||
{
|
||||
WRITELOG(" ClientList: %s\n", _params.clientListName);
|
||||
}
|
||||
|
||||
if ( _params.predefinedTopicFileName )
|
||||
if (_params.predefinedTopicFileName)
|
||||
{
|
||||
WRITELOG(" PreDefFile: %s\n", _params.predefinedTopicFileName);
|
||||
}
|
||||
|
||||
WRITELOG(" SensorN/W: %s\n", _sensorNetwork.getDescription());
|
||||
WRITELOG(" Broker: %s : %s, %s\n", _params.brokerName, _params.port, _params.portSecure);
|
||||
WRITELOG(" RootCApath: %s\n", _params.rootCApath);
|
||||
WRITELOG(" RootCAfile: %s\n", _params.rootCAfile);
|
||||
WRITELOG(" CertKey: %s\n", _params.certKey);
|
||||
WRITELOG(" PrivateKey: %s\n\n\n", _params.privateKey);
|
||||
WRITELOG(" SensorN/W: %s\n", _sensorNetwork.getDescription());
|
||||
WRITELOG(" Broker: %s : %s, %s\n", _params.brokerName, _params.port,
|
||||
_params.portSecure);
|
||||
WRITELOG(" RootCApath: %s\n", _params.rootCApath);
|
||||
WRITELOG(" RootCAfile: %s\n", _params.rootCAfile);
|
||||
WRITELOG(" CertKey: %s\n", _params.certKey);
|
||||
WRITELOG(" PrivateKey: %s\n\n\n", _params.privateKey);
|
||||
|
||||
_stopFlg = false;
|
||||
_stopFlg = false;
|
||||
|
||||
/* Run Tasks until CTRL+C entred */
|
||||
MultiTaskProcess::run();
|
||||
/* Run Tasks until CTRL+C entred */
|
||||
MultiTaskProcess::run();
|
||||
|
||||
_stopFlg = true;
|
||||
_stopFlg = true;
|
||||
|
||||
/* stop Tasks */
|
||||
Event* ev = new Event();
|
||||
ev->setStop();
|
||||
_packetEventQue.post(ev);
|
||||
ev = new Event();
|
||||
ev->setStop();
|
||||
_brokerSendQue.post(ev);
|
||||
ev = new Event();
|
||||
ev->setStop();
|
||||
_clientSendQue.post(ev);
|
||||
/* stop Tasks */
|
||||
Event* ev = new Event();
|
||||
ev->setStop();
|
||||
_packetEventQue.post(ev);
|
||||
ev = new Event();
|
||||
ev->setStop();
|
||||
_brokerSendQue.post(ev);
|
||||
ev = new Event();
|
||||
ev->setStop();
|
||||
_clientSendQue.post(ev);
|
||||
|
||||
/* wait until all Task stop */
|
||||
MultiTaskProcess::waitStop();
|
||||
/* wait until all Task stop */
|
||||
MultiTaskProcess::waitStop();
|
||||
|
||||
WRITELOG("\n\n%s MQTT-SN Gateway stopped.\n\n", currentDateTime());
|
||||
_lightIndicator.allLightOff();
|
||||
WRITELOG("\n\n%s MQTT-SN Gateway stopped.\n\n", currentDateTime());
|
||||
_lightIndicator.allLightOff();
|
||||
}
|
||||
|
||||
bool Gateway::IsStopping(void)
|
||||
{
|
||||
return _stopFlg;
|
||||
return _stopFlg;
|
||||
}
|
||||
|
||||
EventQue* Gateway::getPacketEventQue()
|
||||
{
|
||||
return &_packetEventQue;
|
||||
return &_packetEventQue;
|
||||
}
|
||||
|
||||
EventQue* Gateway::getClientSendQue()
|
||||
{
|
||||
return &_clientSendQue;
|
||||
return &_clientSendQue;
|
||||
}
|
||||
|
||||
EventQue* Gateway::getBrokerSendQue()
|
||||
{
|
||||
return &_brokerSendQue;
|
||||
return &_brokerSendQue;
|
||||
}
|
||||
|
||||
ClientList* Gateway::getClientList()
|
||||
{
|
||||
return _clientList;
|
||||
return _clientList;
|
||||
}
|
||||
|
||||
SensorNetwork* Gateway::getSensorNetwork()
|
||||
{
|
||||
return &_sensorNetwork;
|
||||
return &_sensorNetwork;
|
||||
}
|
||||
|
||||
LightIndicator* Gateway::getLightIndicator()
|
||||
{
|
||||
return &_lightIndicator;
|
||||
return &_lightIndicator;
|
||||
}
|
||||
|
||||
GatewayParams* Gateway::getGWParams(void)
|
||||
{
|
||||
return &_params;
|
||||
return &_params;
|
||||
}
|
||||
|
||||
AdapterManager* Gateway::getAdapterManager(void)
|
||||
@@ -388,10 +390,8 @@ Topics* Gateway::getTopics(void)
|
||||
|
||||
bool Gateway::hasSecureConnection(void)
|
||||
{
|
||||
return ( _params.certKey
|
||||
&& _params.privateKey
|
||||
&& _params.rootCApath
|
||||
&& _params.rootCAfile );
|
||||
return (_params.certKey && _params.privateKey && _params.rootCApath
|
||||
&& _params.rootCAfile);
|
||||
}
|
||||
/*=====================================
|
||||
Class EventQue
|
||||
@@ -403,87 +403,86 @@ EventQue::EventQue()
|
||||
|
||||
EventQue::~EventQue()
|
||||
{
|
||||
_mutex.lock();
|
||||
while (_que.size() > 0)
|
||||
{
|
||||
delete _que.front();
|
||||
_que.pop();
|
||||
}
|
||||
_mutex.unlock();
|
||||
_mutex.lock();
|
||||
while (_que.size() > 0)
|
||||
{
|
||||
delete _que.front();
|
||||
_que.pop();
|
||||
}
|
||||
_mutex.unlock();
|
||||
}
|
||||
|
||||
void EventQue::setMaxSize(uint16_t maxSize)
|
||||
void EventQue::setMaxSize(uint16_t maxSize)
|
||||
{
|
||||
_que.setMaxSize((int)maxSize);
|
||||
_que.setMaxSize((int) maxSize);
|
||||
}
|
||||
|
||||
Event* EventQue::wait(void)
|
||||
{
|
||||
Event* ev = nullptr;
|
||||
Event* ev = nullptr;
|
||||
|
||||
while(ev == nullptr)
|
||||
{
|
||||
if ( _que.size() == 0 )
|
||||
{
|
||||
_sem.wait();
|
||||
}
|
||||
_mutex.lock();
|
||||
ev = _que.front();
|
||||
_que.pop();
|
||||
_mutex.unlock();
|
||||
}
|
||||
return ev;
|
||||
while (ev == nullptr)
|
||||
{
|
||||
if (_que.size() == 0)
|
||||
{
|
||||
_sem.wait();
|
||||
}
|
||||
_mutex.lock();
|
||||
ev = _que.front();
|
||||
_que.pop();
|
||||
_mutex.unlock();
|
||||
}
|
||||
return ev;
|
||||
}
|
||||
|
||||
Event* EventQue::timedwait(uint16_t millsec)
|
||||
{
|
||||
Event* ev;
|
||||
if ( _que.size() == 0 )
|
||||
{
|
||||
_sem.timedwait(millsec);
|
||||
}
|
||||
_mutex.lock();
|
||||
Event* ev;
|
||||
if (_que.size() == 0)
|
||||
{
|
||||
_sem.timedwait(millsec);
|
||||
}
|
||||
_mutex.lock();
|
||||
|
||||
if (_que.size() == 0)
|
||||
{
|
||||
ev = new Event();
|
||||
ev->setTimeout();
|
||||
}
|
||||
else
|
||||
{
|
||||
ev = _que.front();
|
||||
_que.pop();
|
||||
}
|
||||
_mutex.unlock();
|
||||
return ev;
|
||||
if (_que.size() == 0)
|
||||
{
|
||||
ev = new Event();
|
||||
ev->setTimeout();
|
||||
}
|
||||
else
|
||||
{
|
||||
ev = _que.front();
|
||||
_que.pop();
|
||||
}
|
||||
_mutex.unlock();
|
||||
return ev;
|
||||
}
|
||||
|
||||
void EventQue::post(Event* ev)
|
||||
{
|
||||
if ( ev )
|
||||
{
|
||||
_mutex.lock();
|
||||
if ( _que.post(ev) )
|
||||
{
|
||||
_sem.post();
|
||||
}
|
||||
else
|
||||
{
|
||||
delete ev;
|
||||
}
|
||||
_mutex.unlock();
|
||||
}
|
||||
if (ev)
|
||||
{
|
||||
_mutex.lock();
|
||||
if (_que.post(ev))
|
||||
{
|
||||
_sem.post();
|
||||
}
|
||||
else
|
||||
{
|
||||
delete ev;
|
||||
}
|
||||
_mutex.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
int EventQue::size()
|
||||
{
|
||||
_mutex.lock();
|
||||
int sz = _que.size();
|
||||
_mutex.unlock();
|
||||
return sz;
|
||||
_mutex.lock();
|
||||
int sz = _que.size();
|
||||
_mutex.unlock();
|
||||
return sz;
|
||||
}
|
||||
|
||||
|
||||
/*=====================================
|
||||
Class Event
|
||||
=====================================*/
|
||||
@@ -494,96 +493,95 @@ Event::Event()
|
||||
|
||||
Event::~Event()
|
||||
{
|
||||
if (_sensorNetAddr)
|
||||
{
|
||||
delete _sensorNetAddr;
|
||||
}
|
||||
if (_sensorNetAddr)
|
||||
{
|
||||
delete _sensorNetAddr;
|
||||
}
|
||||
|
||||
if (_mqttSNPacket)
|
||||
{
|
||||
delete _mqttSNPacket;
|
||||
}
|
||||
if (_mqttSNPacket)
|
||||
{
|
||||
delete _mqttSNPacket;
|
||||
}
|
||||
|
||||
if (_mqttGWPacket)
|
||||
{
|
||||
delete _mqttGWPacket;
|
||||
}
|
||||
if (_mqttGWPacket)
|
||||
{
|
||||
delete _mqttGWPacket;
|
||||
}
|
||||
}
|
||||
|
||||
EventType Event::getEventType()
|
||||
{
|
||||
return _eventType;
|
||||
return _eventType;
|
||||
}
|
||||
|
||||
void Event::setClientSendEvent(Client* client, MQTTSNPacket* packet)
|
||||
{
|
||||
_client = client;
|
||||
_eventType = EtClientSend;
|
||||
_mqttSNPacket = packet;
|
||||
_client = client;
|
||||
_eventType = EtClientSend;
|
||||
_mqttSNPacket = packet;
|
||||
}
|
||||
|
||||
void Event::setBrokerSendEvent(Client* client, MQTTGWPacket* packet)
|
||||
{
|
||||
_client = client;
|
||||
_eventType = EtBrokerSend;
|
||||
_mqttGWPacket = packet;
|
||||
_client = client;
|
||||
_eventType = EtBrokerSend;
|
||||
_mqttGWPacket = packet;
|
||||
}
|
||||
|
||||
void Event::setClientRecvEvent(Client* client, MQTTSNPacket* packet)
|
||||
{
|
||||
_client = client;
|
||||
_eventType = EtClientRecv;
|
||||
_mqttSNPacket = packet;
|
||||
_client = client;
|
||||
_eventType = EtClientRecv;
|
||||
_mqttSNPacket = packet;
|
||||
}
|
||||
|
||||
void Event::setBrokerRecvEvent(Client* client, MQTTGWPacket* packet)
|
||||
{
|
||||
_client = client;
|
||||
_eventType = EtBrokerRecv;
|
||||
_mqttGWPacket = packet;
|
||||
_client = client;
|
||||
_eventType = EtBrokerRecv;
|
||||
_mqttGWPacket = packet;
|
||||
}
|
||||
|
||||
void Event::setTimeout(void)
|
||||
{
|
||||
_eventType = EtTimeout;
|
||||
_eventType = EtTimeout;
|
||||
}
|
||||
|
||||
void Event::setStop(void)
|
||||
{
|
||||
_eventType = EtStop;
|
||||
_eventType = EtStop;
|
||||
}
|
||||
|
||||
void Event::setBrodcastEvent(MQTTSNPacket* msg)
|
||||
{
|
||||
_mqttSNPacket = msg;
|
||||
_eventType = EtBroadcast;
|
||||
_mqttSNPacket = msg;
|
||||
_eventType = EtBroadcast;
|
||||
}
|
||||
|
||||
void Event::setClientSendEvent(SensorNetAddress* addr, MQTTSNPacket* msg)
|
||||
{
|
||||
_eventType = EtSensornetSend;
|
||||
_sensorNetAddr = addr;
|
||||
_mqttSNPacket = msg;
|
||||
_eventType = EtSensornetSend;
|
||||
_sensorNetAddr = addr;
|
||||
_mqttSNPacket = msg;
|
||||
}
|
||||
|
||||
Client* Event::getClient(void)
|
||||
{
|
||||
return _client;
|
||||
return _client;
|
||||
}
|
||||
|
||||
SensorNetAddress* Event::getSensorNetAddress(void)
|
||||
{
|
||||
return _sensorNetAddr;
|
||||
return _sensorNetAddr;
|
||||
}
|
||||
|
||||
MQTTSNPacket* Event::getMQTTSNPacket()
|
||||
{
|
||||
return _mqttSNPacket;
|
||||
return _mqttSNPacket;
|
||||
}
|
||||
|
||||
MQTTGWPacket* Event::getMQTTGWPacket(void)
|
||||
{
|
||||
return _mqttGWPacket;
|
||||
return _mqttGWPacket;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user