#include <cstring>\r
#include "NSCommon.h"\r
#include "NSProviderInterface.h"\r
+#include "NSAcceptedConsumers.h"\r
#include "NSConsumer.h"\r
#include "NSSyncInfo.h"\r
#include "NSConstants.h"\r
+#include "OCRepresentation.h"\r
+#include "ocpayload.h"\r
#include "oic_string.h"\r
#include "oic_malloc.h"\r
\r
{\r
namespace Service\r
{\r
- void onConsumerSubscribedCallback(::NSConsumer *consumer)\r
+ void NSProviderService::onConsumerSubscribedCallback(::NSConsumer *consumer)\r
{\r
NS_LOG(DEBUG, "onConsumerSubscribedCallback - IN");\r
- NSConsumer *nsConsumer = new NSConsumer(consumer);\r
- NSProviderService::getInstance()->getAcceptedConsumers().push_back(nsConsumer);\r
+ std::shared_ptr<NSConsumer> nsConsumer = std::make_shared<NSConsumer>(consumer);\r
+ NSProviderService::getInstance()->getAcceptedConsumers()->addConsumer(nsConsumer);\r
if (NSProviderService::getInstance()->getProviderConfig().m_subscribeRequestCb != NULL)\r
{\r
NS_LOG(DEBUG, "initiating the callback for consumer subscribed");\r
NS_LOG(DEBUG, "onConsumerSubscribedCallback - OUT");\r
}\r
\r
- void onMessageSynchronizedCallback(::NSSyncInfo *syncInfo)\r
+ void NSProviderService::onMessageSynchronizedCallback(::NSSyncInfo *syncInfo)\r
{\r
NS_LOG(DEBUG, "onMessageSynchronizedCallback - IN");\r
- NSSyncInfo *nsSyncInfo = new NSSyncInfo(syncInfo);\r
+ NSSyncInfo nsSyncInfo(syncInfo);\r
if (NSProviderService::getInstance()->getProviderConfig().m_syncInfoCb != NULL)\r
{\r
NS_LOG(DEBUG, "initiating the callback for synchronized");\r
NSProviderService::getInstance()->getProviderConfig().m_syncInfoCb(nsSyncInfo);\r
}\r
- delete nsSyncInfo;\r
NS_LOG(DEBUG, "onMessageSynchronizedCallback - OUT");\r
}\r
\r
- ::NSMessage *NSProviderService::getNSMessage(NSMessage *msg)\r
+ ::NSMessage *NSProviderService::getNSMessage(const NSMessage &msg)\r
{\r
::NSMessage *nsMsg = new ::NSMessage;\r
- nsMsg->messageId = msg->getMessageId();\r
- OICStrcpy(nsMsg->providerId, NS_UTILS_UUID_STRING_SIZE, msg->getProviderId().c_str());\r
- nsMsg->sourceName = OICStrdup(msg->getSourceName().c_str());\r
- nsMsg->type = (::NSMessageType) msg->getType();\r
- nsMsg->dateTime = OICStrdup(msg->getTime().c_str());\r
- nsMsg->ttl = msg->getTTL();\r
- nsMsg->title = OICStrdup(msg->getTitle().c_str());\r
- nsMsg->contentText = OICStrdup(msg->getContentText().c_str());\r
- nsMsg->topic = OICStrdup(msg->getTopic().c_str());\r
-\r
- nsMsg->mediaContents = new ::NSMediaContents;\r
- if (msg->getMediaContents() != nullptr)\r
- nsMsg->mediaContents->iconImage = OICStrdup(msg->getMediaContents()->getIconImage().c_str());\r
+ nsMsg->messageId = msg.getMessageId();\r
+ OICStrcpy(nsMsg->providerId, NS_UTILS_UUID_STRING_SIZE, msg.getProviderId().c_str());\r
+ nsMsg->sourceName = OICStrdup(msg.getSourceName().c_str());\r
+ nsMsg->type = (::NSMessageType) msg.getType();\r
+ nsMsg->dateTime = OICStrdup(msg.getTime().c_str());\r
+ nsMsg->ttl = msg.getTTL();\r
+ nsMsg->title = OICStrdup(msg.getTitle().c_str());\r
+ nsMsg->contentText = OICStrdup(msg.getContentText().c_str());\r
+ nsMsg->topic = OICStrdup(msg.getTopic().c_str());\r
+\r
+ if (msg.getMediaContents() != nullptr)\r
+ {\r
+ nsMsg->mediaContents = new ::NSMediaContents;\r
+ nsMsg->mediaContents->iconImage = OICStrdup(msg.getMediaContents()->getIconImage().c_str());\r
+ }\r
else\r
- nsMsg->mediaContents->iconImage = nullptr;\r
+ {\r
+ nsMsg->mediaContents = nullptr;\r
+ }\r
+ nsMsg->extraInfo = msg.getExtraInfo().getPayload();\r
return nsMsg;\r
}\r
\r
+ NSProviderService::NSProviderService()\r
+ {\r
+ m_config.m_subscribeRequestCb = NULL;\r
+ m_config.m_syncInfoCb = NULL;\r
+ m_acceptedConsumers = new NSAcceptedConsumers();\r
+ }\r
+\r
NSProviderService::~NSProviderService()\r
{\r
- for (auto it : getAcceptedConsumers())\r
- {\r
- delete it;\r
- }\r
- getAcceptedConsumers().clear();\r
+ m_config.m_subscribeRequestCb = NULL;\r
+ m_config.m_syncInfoCb = NULL;\r
+ m_acceptedConsumers->removeConsumers();\r
+ delete m_acceptedConsumers;\r
}\r
\r
NSProviderService *NSProviderService::getInstance()\r
NSResult NSProviderService::start(NSProviderService::ProviderConfig config)\r
{\r
NS_LOG(DEBUG, "start - IN");\r
+ m_acceptedConsumers->removeConsumers();\r
\r
m_config = config;\r
NSProviderConfig nsConfig;\r
nsConfig.syncInfoCallback = onMessageSynchronizedCallback;\r
nsConfig.subControllability = config.subControllability;\r
nsConfig.userInfo = OICStrdup(config.userInfo.c_str());\r
+ nsConfig.resourceSecurity = config.resourceSecurity;\r
\r
NSResult result = (NSResult) NSStartProvider(nsConfig);\r
+ OICFree(nsConfig.userInfo);\r
NS_LOG(DEBUG, "start - OUT");\r
return result;\r
}\r
NSResult NSProviderService::stop()\r
{\r
NS_LOG(DEBUG, "stop - IN");\r
+\r
+ m_config.m_subscribeRequestCb = NULL;\r
+ m_config.m_syncInfoCb = NULL;\r
+ m_acceptedConsumers->removeConsumers();\r
+\r
NSResult result = (NSResult) NSStopProvider();\r
NS_LOG(DEBUG, "stop - OUT");\r
return result;\r
NSResult NSProviderService::enableRemoteService(const std::string &serverAddress)\r
{\r
NS_LOG(DEBUG, "enableRemoteService - IN");\r
- NS_LOG_V(DEBUG, "Server Address : %s", serverAddress.c_str());\r
+ NS_LOG_V(INFO_PRIVATE, "Server Address : %s", serverAddress.c_str());\r
NSResult result = NSResult::ERROR;\r
#ifdef WITH_CLOUD\r
result = (NSResult) NSProviderEnableRemoteService(OICStrdup(serverAddress.c_str()));\r
NSResult NSProviderService::disableRemoteService(const std::string &serverAddress)\r
{\r
NS_LOG(DEBUG, "disableRemoteService - IN");\r
- NS_LOG_V(DEBUG, "Server Address : %s", serverAddress.c_str());\r
+ NS_LOG_V(INFO_PRIVATE, "Server Address : %s", serverAddress.c_str());\r
NSResult result = NSResult::ERROR;\r
#ifdef WITH_CLOUD\r
result = (NSResult) NSProviderDisableRemoteService(OICStrdup(serverAddress.c_str()));\r
return result;\r
}\r
\r
- NSResult NSProviderService::sendMessage(NSMessage *msg)\r
+ NSResult NSProviderService::subscribeMQService(const std::string &serverAddress,\r
+ const std::string &topicName)\r
+ {\r
+ NS_LOG(DEBUG, "subscribeMQService - IN");\r
+ NS_LOG_V(INFO_PRIVATE, "Server Address : %s", serverAddress.c_str());\r
+ NSResult result = NSResult::ERROR;\r
+#ifdef WITH_MQ\r
+ result = (NSResult) NSProviderSubscribeMQService(\r
+ serverAddress.c_str(), topicName.c_str());\r
+#else\r
+ NS_LOG(ERROR, "MQ Services feature is not enabled in the Build");\r
+ (void) serverAddress;\r
+ (void) topicName;\r
+#endif\r
+ NS_LOG(DEBUG, "subscribeMQService - OUT");\r
+ return result;\r
+ }\r
+\r
+ NSResult NSProviderService::sendMessage(const NSMessage &msg)\r
{\r
NS_LOG(DEBUG, "sendMessage - IN");\r
NSResult result = NSResult::ERROR;\r
- if (msg != nullptr)\r
- {\r
- ::NSMessage *nsMsg = getNSMessage(msg);\r
\r
- NS_LOG_V(DEBUG, "nsMsg->providerId : %s", nsMsg->providerId);\r
- result = (NSResult) NSSendMessage(nsMsg);\r
- delete nsMsg->mediaContents;\r
- delete nsMsg;\r
- }\r
- else\r
+ ::NSMessage *nsMsg = getNSMessage(msg);\r
+\r
+ NS_LOG_V(INFO_PRIVATE, "nsMsg->providerId : %s", nsMsg->providerId);\r
+ result = (NSResult) NSSendMessage(nsMsg);\r
+ OICFree(nsMsg->dateTime);\r
+ OICFree(nsMsg->title);\r
+ OICFree(nsMsg->contentText);\r
+ OICFree(nsMsg->sourceName);\r
+ OICFree(nsMsg->topic);\r
+ if (nsMsg->mediaContents != NULL)\r
{\r
- NS_LOG(DEBUG, "Empty Message");\r
+ if (nsMsg->mediaContents->iconImage != NULL)\r
+ {\r
+ OICFree(nsMsg->mediaContents->iconImage);\r
+ }\r
+ delete nsMsg->mediaContents;\r
}\r
+ OCPayloadDestroy((OCPayload *) nsMsg->extraInfo);\r
+ delete nsMsg;\r
+\r
NS_LOG(DEBUG, "sendMessage - OUT");\r
return result;\r
}\r
\r
- void NSProviderService::sendSyncInfo(uint64_t messageId,\r
- NSSyncInfo::NSSyncType type)\r
+ NSResult NSProviderService::sendSyncInfo(uint64_t messageId,\r
+ NSSyncInfo::NSSyncType type)\r
{\r
NS_LOG(DEBUG, "sendSyncInfo - IN");\r
- NSProviderSendSyncInfo(messageId, (NSSyncType)type);\r
+ NSResult result = (NSResult) NSProviderSendSyncInfo(messageId, (NSSyncType)type);\r
NS_LOG(DEBUG, "sendSyncInfo - OUT");\r
- return;\r
+ return result;\r
}\r
\r
- NSMessage *NSProviderService::createMessage()\r
+ NSMessage NSProviderService::createMessage()\r
{\r
NS_LOG(DEBUG, "createMessage - IN");\r
\r
::NSMessage *message = NSCreateMessage();\r
- NSMessage *nsMessage = new NSMessage(message);\r
+ NSMessage nsMessage(message);\r
\r
- NS_LOG_V(DEBUG, "Message ID : %lld", (long long int) nsMessage->getMessageId());\r
- NS_LOG_V(DEBUG, "Provider ID : %s", nsMessage->getProviderId().c_str());\r
+ NS_LOG_V(DEBUG, "Message ID : %lld", (long long int) nsMessage.getMessageId());\r
+ NS_LOG_V(INFO_PRIVATE, "Provider ID : %s", nsMessage.getProviderId().c_str());\r
NS_LOG(DEBUG, "createMessage - OUT");\r
\r
+ OICFree(message);\r
return nsMessage;\r
}\r
\r
return result;\r
}\r
\r
- NSTopicsList *NSProviderService::getRegisteredTopicList()\r
+ std::shared_ptr<NSTopicsList> NSProviderService::getRegisteredTopicList()\r
{\r
NS_LOG(DEBUG, "getRegisteredTopicList - IN");\r
::NSTopicLL *topics = NSProviderGetTopics();\r
\r
- NSTopicsList *nsTopics = new NSTopicsList(topics);\r
+ std::shared_ptr<NSTopicsList> nsTopics = std::make_shared<NSTopicsList>(topics, false);\r
NS_LOG(DEBUG, "getRegisteredTopicList - OUT");\r
return nsTopics;\r
}\r
return m_config;\r
}\r
\r
- NSConsumer *NSProviderService::getConsumer(const std::string &id)\r
+ std::shared_ptr<NSConsumer> NSProviderService::getConsumer(const std::string &id)\r
{\r
- for (auto it : getAcceptedConsumers())\r
- {\r
- if (it->getConsumerId() == id)\r
- {\r
- NS_LOG(DEBUG, "getConsumer : Found Consumer with given ID");\r
- return it;\r
- }\r
- }\r
- NS_LOG(DEBUG, "getConsumer : Not Found Consumer with given ID");\r
- return NULL;\r
+ return m_acceptedConsumers->getConsumer(id);\r
}\r
\r
- std::list<NSConsumer *> &NSProviderService::getAcceptedConsumers()\r
+ NSAcceptedConsumers *NSProviderService::getAcceptedConsumers()\r
{\r
return m_acceptedConsumers;\r
}\r