mirror of
https://github.com/eclipse/paho.mqtt-sn.embedded-c.git
synced 2025-12-17 01:16:52 +01:00
@@ -33,42 +33,42 @@ char* currentDateTime(void);
|
||||
=====================================*/
|
||||
AdapterManager::AdapterManager(Gateway* gw)
|
||||
{
|
||||
_gateway = gw;
|
||||
_forwarders = new ForwarderList();
|
||||
_qosm1Proxy = new QoSm1Proxy(gw);
|
||||
_aggregater = new Aggregater(gw);
|
||||
_gateway = gw;
|
||||
_forwarders = new ForwarderList();
|
||||
_qosm1Proxy = new QoSm1Proxy(gw);
|
||||
_aggregater = new Aggregater(gw);
|
||||
}
|
||||
|
||||
|
||||
void AdapterManager::initialize(char* gwName, bool aggregate, bool forwarder, bool qosM1)
|
||||
void AdapterManager::initialize(char* gwName, bool aggregate, bool forwarder,
|
||||
bool qosM1)
|
||||
{
|
||||
if ( aggregate )
|
||||
if (aggregate)
|
||||
{
|
||||
_aggregater->initialize(gwName);
|
||||
_aggregater->initialize(gwName);
|
||||
}
|
||||
|
||||
if ( qosM1 )
|
||||
if (qosM1)
|
||||
{
|
||||
_qosm1Proxy->initialize(gwName);
|
||||
_qosm1Proxy->initialize(gwName);
|
||||
}
|
||||
|
||||
if ( forwarder )
|
||||
if (forwarder)
|
||||
{
|
||||
_forwarders->initialize(_gateway);
|
||||
_forwarders->initialize(_gateway);
|
||||
}
|
||||
}
|
||||
|
||||
AdapterManager::~AdapterManager(void)
|
||||
{
|
||||
if ( _forwarders )
|
||||
if (_forwarders)
|
||||
{
|
||||
delete _forwarders;
|
||||
}
|
||||
if ( _qosm1Proxy )
|
||||
if (_qosm1Proxy)
|
||||
{
|
||||
delete _qosm1Proxy;
|
||||
}
|
||||
if ( _aggregater )
|
||||
if (_aggregater)
|
||||
{
|
||||
delete _aggregater;
|
||||
}
|
||||
@@ -91,119 +91,124 @@ Aggregater* AdapterManager::getAggregater(void)
|
||||
|
||||
bool AdapterManager::isAggregatedClient(Client* client)
|
||||
{
|
||||
if ( !_aggregater->isActive() || client->isQoSm1() || client->isAggregater() || client->isQoSm1Proxy())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (!_aggregater->isActive() || client->isQoSm1() || client->isAggregater()
|
||||
|| client->isQoSm1Proxy())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Client* AdapterManager::getClient(Client* client)
|
||||
{
|
||||
bool secure = client->isSecureNetwork();
|
||||
Client* newClient = client;
|
||||
bool secure = client->isSecureNetwork();
|
||||
Client* newClient = client;
|
||||
|
||||
if ( client->isQoSm1() )
|
||||
{
|
||||
newClient = _qosm1Proxy->getAdapterClient(client);
|
||||
_qosm1Proxy->resetPingTimer(secure);
|
||||
}
|
||||
else if ( client->isAggregated() )
|
||||
{
|
||||
newClient = _aggregater->getAdapterClient(client);
|
||||
_aggregater->resetPingTimer(secure);
|
||||
}
|
||||
else if ( client->isQoSm1Proxy() )
|
||||
{
|
||||
_qosm1Proxy->resetPingTimer(secure);
|
||||
}
|
||||
else if ( client->isAggregater() )
|
||||
{
|
||||
_aggregater->resetPingTimer(secure);
|
||||
}
|
||||
return newClient;
|
||||
if (client->isQoSm1())
|
||||
{
|
||||
newClient = _qosm1Proxy->getAdapterClient(client);
|
||||
_qosm1Proxy->resetPingTimer(secure);
|
||||
}
|
||||
else if (client->isAggregated())
|
||||
{
|
||||
newClient = _aggregater->getAdapterClient(client);
|
||||
_aggregater->resetPingTimer(secure);
|
||||
}
|
||||
else if (client->isQoSm1Proxy())
|
||||
{
|
||||
_qosm1Proxy->resetPingTimer(secure);
|
||||
}
|
||||
else if (client->isAggregater())
|
||||
{
|
||||
_aggregater->resetPingTimer(secure);
|
||||
}
|
||||
return newClient;
|
||||
}
|
||||
|
||||
int AdapterManager::unicastToClient(Client* client, MQTTSNPacket* packet, ClientSendTask* task)
|
||||
int AdapterManager::unicastToClient(Client* client, MQTTSNPacket* packet,
|
||||
ClientSendTask* task)
|
||||
{
|
||||
char pbuf[SIZE_OF_LOG_PACKET * 3];
|
||||
Forwarder* fwd = client->getForwarder();
|
||||
int rc = 0;
|
||||
char pbuf[SIZE_OF_LOG_PACKET * 3];
|
||||
Forwarder* fwd = client->getForwarder();
|
||||
int rc = 0;
|
||||
|
||||
if ( fwd )
|
||||
{
|
||||
MQTTSNGWEncapsulatedPacket encap(packet);
|
||||
WirelessNodeId* wnId = fwd->getWirelessNodeId(client);
|
||||
encap.setWirelessNodeId(wnId);
|
||||
task->log(client, packet);
|
||||
WRITELOG(FORMAT_Y_W_G, currentDateTime(), encap.getName(), RIGHTARROW, fwd->getId(), encap.print(pbuf));
|
||||
rc = encap.unicast(_gateway->getSensorNetwork(),fwd->getSensorNetAddr());
|
||||
}
|
||||
else
|
||||
{
|
||||
task->log(client, packet);
|
||||
if ( client->isQoSm1Proxy() )
|
||||
{
|
||||
_qosm1Proxy->send(packet, client);
|
||||
}
|
||||
else if ( client->isAggregater() )
|
||||
{
|
||||
_aggregater->send(packet, client);
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = packet->unicast(_gateway->getSensorNetwork(), client->getSensorNetAddress());
|
||||
}
|
||||
}
|
||||
return rc;
|
||||
if (fwd)
|
||||
{
|
||||
MQTTSNGWEncapsulatedPacket encap(packet);
|
||||
WirelessNodeId* wnId = fwd->getWirelessNodeId(client);
|
||||
encap.setWirelessNodeId(wnId);
|
||||
task->log(client, packet);
|
||||
WRITELOG(FORMAT_Y_W_G, currentDateTime(), encap.getName(), RIGHTARROW,
|
||||
fwd->getId(), encap.print(pbuf));
|
||||
rc = encap.unicast(_gateway->getSensorNetwork(),
|
||||
fwd->getSensorNetAddr());
|
||||
}
|
||||
else
|
||||
{
|
||||
task->log(client, packet);
|
||||
if (client->isQoSm1Proxy())
|
||||
{
|
||||
_qosm1Proxy->send(packet, client);
|
||||
}
|
||||
else if (client->isAggregater())
|
||||
{
|
||||
_aggregater->send(packet, client);
|
||||
}
|
||||
else
|
||||
{
|
||||
rc = packet->unicast(_gateway->getSensorNetwork(),
|
||||
client->getSensorNetAddress());
|
||||
}
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
void AdapterManager::checkConnection(void)
|
||||
{
|
||||
if ( _aggregater->isActive())
|
||||
{
|
||||
_aggregater->checkConnection();
|
||||
}
|
||||
if (_aggregater->isActive())
|
||||
{
|
||||
_aggregater->checkConnection();
|
||||
}
|
||||
|
||||
if ( _qosm1Proxy->isActive())
|
||||
{
|
||||
_qosm1Proxy->checkConnection();
|
||||
}
|
||||
if (_qosm1Proxy->isActive())
|
||||
{
|
||||
_qosm1Proxy->checkConnection();
|
||||
}
|
||||
}
|
||||
|
||||
Client* AdapterManager::convertClient(uint16_t msgId, uint16_t* clientMsgId)
|
||||
{
|
||||
return _aggregater->convertClient(msgId, clientMsgId);
|
||||
return _aggregater->convertClient(msgId, clientMsgId);
|
||||
}
|
||||
|
||||
bool AdapterManager::isAggregaterActive(void)
|
||||
{
|
||||
return _aggregater->isActive();
|
||||
return _aggregater->isActive();
|
||||
}
|
||||
|
||||
/*
|
||||
AggregateTopicElement* AdapterManager::findTopic(Topic* topic)
|
||||
{
|
||||
return _aggregater->findTopic(topic);
|
||||
}
|
||||
AggregateTopicElement* AdapterManager::findTopic(Topic* topic)
|
||||
{
|
||||
return _aggregater->findTopic(topic);
|
||||
}
|
||||
|
||||
AggregateTopicElement* AdapterManager::addAggregateTopic(Topic* topic, Client* client)
|
||||
{
|
||||
return _aggregater->addAggregateTopic(topic, client);
|
||||
}
|
||||
AggregateTopicElement* AdapterManager::addAggregateTopic(Topic* topic, Client* client)
|
||||
{
|
||||
return _aggregater->addAggregateTopic(topic, client);
|
||||
}
|
||||
|
||||
|
||||
void AdapterManager::removeAggregateTopic(Topic* topic, Client* client)
|
||||
{
|
||||
//_aggregater->removeAggregateTopic(topic, client);
|
||||
}
|
||||
void AdapterManager::removeAggregateTopic(Topic* topic, Client* client)
|
||||
{
|
||||
//_aggregater->removeAggregateTopic(topic, client);
|
||||
}
|
||||
|
||||
void AdapterManager::removeAggregateTopicList(Topics* topics, Client* client)
|
||||
{
|
||||
void AdapterManager::removeAggregateTopicList(Topics* topics, Client* client)
|
||||
{
|
||||
|
||||
}
|
||||
*/
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user