1. Changes in NSProvider APIs for get and set TopicsList to shared pointers.
2. Changes in NSConsumer API for get ConsumerTopicList to shared pointer
3. Changes in NSProviderService API to get RegisteredTopicsList to shared pointer.
4. changes to return as object of list of Topics in TopicsList
Patch 2 : rebased
patch 3 : added shared_ptr changes to setTopicList as per review
patch 4 : added modifiability feature for preventing TopicsList modification
patch 5 : added unsetModifiability to only preven modification
patch 6 : rebased
Change-Id: I3aacef4f3a5809623add69a16fd2ad9f93d11dd9
Signed-off-by: abitha.s <abitha.s@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/17113
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
15 files changed:
return topicState;\r
}\r
\r
return topicState;\r
}\r
\r
-jobject getJavaTopicsList(JNIEnv *env, OIC::Service::NSTopicsList *topicList)\r
+jobject getJavaTopicsList(JNIEnv *env, std::shared_ptr<OIC::Service::NSTopicsList> topicList)\r
{\r
NS_LOGD ("ConsumerService_getJavaTopicsList - IN");\r
jclass cls_topicList = (jclass) (env->NewLocalRef(g_cls_TopicsList));\r
{\r
NS_LOGD ("ConsumerService_getJavaTopicsList - IN");\r
jclass cls_topicList = (jclass) (env->NewLocalRef(g_cls_TopicsList));\r
}\r
for (auto it : topicList->getTopicsList())\r
{\r
}\r
for (auto it : topicList->getTopicsList())\r
{\r
- jobject jState = getJavaTopicState(env, it->getState());\r
- std::string topicName = it->getTopicName();\r
+ jobject jState = getJavaTopicState(env, it.getState());\r
+ std::string topicName = it.getTopicName();\r
jstring jTopicName = env->NewStringUTF(topicName.c_str());\r
env->CallVoidMethod(obj_topicList, mid_addTopic, jTopicName, jState);\r
}\r
jstring jTopicName = env->NewStringUTF(topicName.c_str());\r
env->CallVoidMethod(obj_topicList, mid_addTopic, jTopicName, jState);\r
}\r
-OIC::Service::NSTopicsList *getNativeTopicsList(JNIEnv *env, jobject jTopicList)\r
+std::shared_ptr<OIC::Service::NSTopicsList> getNativeTopicsList(JNIEnv *env, jobject jTopicList)\r
{\r
NS_LOGD ("ConsumerService_getNativeTopicsList - IN");\r
\r
{\r
NS_LOGD ("ConsumerService_getNativeTopicsList - IN");\r
\r
NS_LOGE ("Error: MethodId for Vector get not found");\r
return nullptr;\r
}\r
NS_LOGE ("Error: MethodId for Vector get not found");\r
return nullptr;\r
}\r
- OIC::Service::NSTopicsList *nsTopicList = new OIC::Service::NSTopicsList();\r
+ std::shared_ptr<OIC::Service::NSTopicsList> nsTopicList = std::make_shared<OIC::Service::NSTopicsList>();\r
for (int index = 0; index < size; index++)\r
{\r
jobject topicObj = env->CallObjectMethod(jobj, getMethod, index);\r
if (topicObj == NULL)\r
{\r
NS_LOGE ("Error: object of field Topic is null");\r
for (int index = 0; index < size; index++)\r
{\r
jobject topicObj = env->CallObjectMethod(jobj, getMethod, index);\r
if (topicObj == NULL)\r
{\r
NS_LOGE ("Error: object of field Topic is null");\r
return nullptr;\r
}\r
const char *name = getNativeTopicName(env, topicObj);\r
if (name == nullptr)\r
{\r
NS_LOGE ("Error: Couldn't find topic Name");\r
return nullptr;\r
}\r
const char *name = getNativeTopicName(env, topicObj);\r
if (name == nullptr)\r
{\r
NS_LOGE ("Error: Couldn't find topic Name");\r
return nullptr;\r
}\r
std::string topicName(name);\r
OIC::Service::NSTopic::NSTopicState state = OIC::Service::NSTopic::NSTopicState::UNSUBSCRIBED;\r
if (!getNativeTopicState(env, topicObj, state))\r
{\r
return nullptr;\r
}\r
std::string topicName(name);\r
OIC::Service::NSTopic::NSTopicState state = OIC::Service::NSTopic::NSTopicState::UNSUBSCRIBED;\r
if (!getNativeTopicState(env, topicObj, state))\r
{\r
return nullptr;\r
}\r
nsTopicList->addTopic(topicName, state);\r
return nullptr;\r
}\r
nsTopicList->addTopic(topicName, state);\r
return NULL;\r
}\r
jlong jProvider = env->GetLongField(jObj, nativeHandle);\r
return NULL;\r
}\r
jlong jProvider = env->GetLongField(jObj, nativeHandle);\r
- OIC::Service::NSTopicsList *topicList = nullptr;\r
+ std::shared_ptr<OIC::Service::NSTopicsList> topicList = nullptr;\r
if (jProvider)\r
{\r
NS_LOGD ("calling subscribe on mNativeHandle");\r
if (jProvider)\r
{\r
NS_LOGD ("calling subscribe on mNativeHandle");\r
ThrowNSException(JNI_INVALID_VALUE, "TopicList cannot be null");\r
return;\r
}\r
ThrowNSException(JNI_INVALID_VALUE, "TopicList cannot be null");\r
return;\r
}\r
- OIC::Service::NSTopicsList *nsTopicsList = getNativeTopicsList(env, jTopicsList);\r
+ std::shared_ptr<OIC::Service::NSTopicsList> nsTopicsList = getNativeTopicsList(env, jTopicsList);\r
if (nsTopicsList == nullptr)\r
{\r
ThrowNSException(JNI_INVALID_VALUE, "NSTopicList cannot be created ");\r
if (nsTopicsList == nullptr)\r
{\r
ThrowNSException(JNI_INVALID_VALUE, "NSTopicList cannot be created ");\r
-jobject getJavaTopicsList(JNIEnv *env, OIC::Service::NSTopicsList *topicList)
+jobject getJavaTopicsList(JNIEnv *env, std::shared_ptr<OIC::Service::NSTopicsList> topicList)
{
NS_LOGD ("JNIProviderService: getJavaTopicsList - IN");
jclass cls_topicList = (jclass) (env->NewLocalRef(g_cls_TopicsList));
{
NS_LOGD ("JNIProviderService: getJavaTopicsList - IN");
jclass cls_topicList = (jclass) (env->NewLocalRef(g_cls_TopicsList));
}
for (auto it : topicList->getTopicsList())
{
}
for (auto it : topicList->getTopicsList())
{
- jobject jState = getJavaTopicState(env, it->getState());
- std::string topicName = it->getTopicName();
+ jobject jState = getJavaTopicState(env, it.getState());
+ std::string topicName = it.getTopicName();
jstring jTopicName = env->NewStringUTF(topicName.c_str());
env->CallVoidMethod(obj_topicList, mid_addTopic, jTopicName, jState);
}
jstring jTopicName = env->NewStringUTF(topicName.c_str());
env->CallVoidMethod(obj_topicList, mid_addTopic, jTopicName, jState);
}
{
NS_LOGD ("JNIProviderService: nativeGetRegisteredTopicList - IN");
{
NS_LOGD ("JNIProviderService: nativeGetRegisteredTopicList - IN");
- OIC::Service::NSTopicsList *topicList =
+ std::shared_ptr<OIC::Service::NSTopicsList> topicList =
OIC::Service::NSProviderService::getInstance()->getRegisteredTopicList();
if (topicList == nullptr)
{
OIC::Service::NSProviderService::getInstance()->getRegisteredTopicList();
if (topicList == nullptr)
{
}
jobject obj_topicList = getJavaTopicsList(env, topicList);
}
jobject obj_topicList = getJavaTopicsList(env, topicList);
NS_LOGD ("JNIProviderService: nativeGetRegisteredTopicList - OUT");
return obj_topicList;
NS_LOGD ("JNIProviderService: nativeGetRegisteredTopicList - OUT");
return obj_topicList;
return NULL;
}
env->ReleaseStringUTFChars(jConsumerId, id);
return NULL;
}
env->ReleaseStringUTFChars(jConsumerId, id);
- OIC::Service::NSTopicsList *topicList = nsConsumer->getConsumerTopicList();
+ std::shared_ptr<OIC::Service::NSTopicsList> topicList = nsConsumer->getConsumerTopicList();
if (topicList == nullptr)
{
ThrowNSException(JNI_NO_NATIVE_POINTER, "Topic List doesn't exist");
return NULL;
}
jobject obj_topicList = getJavaTopicsList(env, topicList);
if (topicList == nullptr)
{
ThrowNSException(JNI_NO_NATIVE_POINTER, "Topic List doesn't exist");
return NULL;
}
jobject obj_topicList = getJavaTopicsList(env, topicList);
NS_LOGD ("JNIProviderService: nativeGetConsumerTopicList - OUT");
return obj_topicList;
NS_LOGD ("JNIProviderService: nativeGetConsumerTopicList - OUT");
return obj_topicList;
- NSTopicsList::NSTopicsList(::NSTopicLL *topics)
+ NSTopicsList::NSTopicsList(::NSTopicLL *topics, bool modify)
{
::NSTopicLL *topicsNode = nullptr;
topicsNode = topics;
{
::NSTopicLL *topicsNode = nullptr;
topicsNode = topics;
while (topicsNode != nullptr)
{
while (topicsNode != nullptr)
{
- addTopic(topicsNode->topicName, (NSTopic::NSTopicState)topicsNode->state);
+ m_topicsList.push_back(new NSTopic(
+ topicsNode->topicName, (NSTopic::NSTopicState)topicsNode->state));
topicsNode = topicsNode->next;
}
topicsNode = topicsNode->next;
}
{
for (auto it : topicsList.getTopicsList())
{
{
for (auto it : topicsList.getTopicsList())
{
- addTopic(it->getTopicName(), it->getState());
+ m_topicsList.push_back(new NSTopic(it.getTopicName(), it.getState()));
}
NSTopicsList &NSTopicsList::operator=(const NSTopicsList &topicsList)
{
for (auto it : topicsList.getTopicsList())
{
}
NSTopicsList &NSTopicsList::operator=(const NSTopicsList &topicsList)
{
for (auto it : topicsList.getTopicsList())
{
- this->addTopic(it->getTopicName(), it->getState());
+ this->m_topicsList.push_back(new NSTopic(it.getTopicName(), it.getState()));
}
NSTopicsList::~NSTopicsList()
{
}
NSTopicsList::~NSTopicsList()
{
- for (auto it : getTopicsList())
+ for (auto it : m_topicsList)
- getTopicsList().clear();
}
void NSTopicsList::addTopic(const std::string &topicName, NSTopic::NSTopicState state)
{
}
void NSTopicsList::addTopic(const std::string &topicName, NSTopic::NSTopicState state)
{
- m_topicsList.push_back(new NSTopic(topicName, state));
+ if(m_modifiable)
+ {
+ m_topicsList.push_back(new NSTopic(topicName, state));
+ }
+ else
+ {
+ //TODO: add exception code for Invalid operation
+ }
}
void NSTopicsList::removeTopic(const std::string &topicName)
{
}
void NSTopicsList::removeTopic(const std::string &topicName)
{
- for (auto it : getTopicsList())
- if (it->getTopicName().compare(topicName) == 0)
+ for (auto it : m_topicsList)
- m_topicsList.remove(it);
+ if (it->getTopicName().compare(topicName) == 0)
+ {
+ m_topicsList.remove(it);
+ }
+ else
+ {
+ //TODO: add exception code for Invalid operation
+ }
+ }
+
+ std::list<NSTopic> NSTopicsList::getTopicsList() const
+ {
+ std::list<NSTopic> topicList;
+ for (auto it : m_topicsList)
+ {
+ NSTopic topic(it->getTopicName(), it->getState());
+ topicList.push_back(topic);
+ }
+ return topicList;
- std::list<NSTopic *> NSTopicsList::getTopicsList() const
+ void NSTopicsList::unsetModifiability()
/**
* Constructor of NSTopicsList.
*/
/**
* Constructor of NSTopicsList.
*/
- NSTopicsList() = default;
+ NSTopicsList() : m_modifiable(true) { }
/**
* Constructor of NSTopicsList.
*
* @param topics - pointer to NSTopicLL struct to initialize.
*/
/**
* Constructor of NSTopicsList.
*
* @param topics - pointer to NSTopicLL struct to initialize.
*/
- NSTopicsList(::NSTopicLL *topics);
+ NSTopicsList(::NSTopicLL *topics, bool modify);
/**
* Copy Constructor of NSTopicsList.
/**
* Copy Constructor of NSTopicsList.
*
* @return topic as NSTopics Linked list.
*/
*
* @return topic as NSTopics Linked list.
*/
- std::list<NSTopic *> getTopicsList() const;
+ std::list<NSTopic> getTopicsList() const;
+
+ /**
+ * This method is for preventing for add/remove Topic from Topicslist.
+ * Below method restricts the application from illegally modifying Topics when
+ * Provider is in Invalid state. By calling the API, the service prevents and protects
+ * the integrity of TopicsList updation when the associated object is Invalid.
+ *
+ */
+ void unsetModifiability();
private:
std::list<NSTopic *> m_topicsList;
private:
std::list<NSTopic *> m_topicsList;
/**
* Constructor of NSProvider.
*/
/**
* Constructor of NSProvider.
*/
- NSProvider(): m_topicList(new NSTopicsList()), m_state(NSProviderState::DENY),
+ NSProvider(): m_topicList(std::make_shared<NSTopicsList>()), m_state(NSProviderState::DENY),
m_subscribedState(NSProviderSubscribedState::DENY),
m_stateCb(NULL), m_messageCb(NULL), m_syncInfoCb(NULL)
{
m_subscribedState(NSProviderSubscribedState::DENY),
m_stateCb(NULL), m_messageCb(NULL), m_syncInfoCb(NULL)
{
* @param providerId - providerId of the Notification.
*/
NSProvider(const std::string &providerId) : m_providerId(providerId),
* @param providerId - providerId of the Notification.
*/
NSProvider(const std::string &providerId) : m_providerId(providerId),
- m_topicList(new NSTopicsList()), m_state(NSProviderState::DENY),
+ m_topicList(std::make_shared<NSTopicsList>()), m_state(NSProviderState::DENY),
m_subscribedState(NSProviderSubscribedState::DENY),
m_stateCb(NULL), m_messageCb(NULL), m_syncInfoCb(NULL)
{
m_subscribedState(NSProviderSubscribedState::DENY),
m_stateCb(NULL), m_messageCb(NULL), m_syncInfoCb(NULL)
{
* @param providerId - providerId of the Notification.
* @param topicList - NSTopicsList of interested Topics.
*/
* @param providerId - providerId of the Notification.
* @param topicList - NSTopicsList of interested Topics.
*/
- NSProvider(const std::string &providerId, NSTopicsList *topicList) : m_providerId(
+ NSProvider(const std::string &providerId, std::shared_ptr<NSTopicsList> topicList) : m_providerId(
providerId), m_topicList(topicList), m_state(NSProviderState::DENY),
m_subscribedState(NSProviderSubscribedState::DENY),
m_stateCb(NULL), m_messageCb(NULL), m_syncInfoCb(NULL)
providerId), m_topicList(topicList), m_state(NSProviderState::DENY),
m_subscribedState(NSProviderSubscribedState::DENY),
m_stateCb(NULL), m_messageCb(NULL), m_syncInfoCb(NULL)
/**
* Destructor of NSProvider.
*/
/**
* Destructor of NSProvider.
*/
+ ~NSProvider() = default;
/**
* This method is for getting ProviderId from the Notification service provider.
/**
* This method is for getting ProviderId from the Notification service provider.
*
* @return NSTopicsList as pointer.
*/
*
* @return NSTopicsList as pointer.
*/
- NSTopicsList *getTopicList() const;
+ std::shared_ptr<NSTopicsList> getTopicList() const;
/**
* Update Topic list that is wanted to be subscribed from provider
/**
* Update Topic list that is wanted to be subscribed from provider
* @param topicList - NSTopicsList of interested Topics.
* @return NSResult
*/
* @param topicList - NSTopicsList of interested Topics.
* @return NSResult
*/
- NSResult updateTopicList(NSTopicsList *topicList);
+ NSResult updateTopicList(std::shared_ptr<NSTopicsList> topicList);
/**
* This method is for getting ProviderState from the Notification service provider.
/**
* This method is for getting ProviderState from the Notification service provider.
*
* @param topicsList as NSTopicsList pointer.
*/
*
* @param topicsList as NSTopicsList pointer.
*/
- void setTopicList(NSTopicsList *topicsList);
+ void setTopicList(std::shared_ptr<NSTopicsList> topicsList);
/**
* This method is for setting ProviderState for the Notification service provider.
/**
* This method is for setting ProviderState for the Notification service provider.
private:
std::string m_providerId;
private:
std::string m_providerId;
- NSTopicsList *m_topicList;
+ std::shared_ptr<NSTopicsList> m_topicList;
NSProviderState m_state;
NSProviderSubscribedState m_subscribedState;
NSProviderState m_state;
NSProviderSubscribedState m_subscribedState;
auto discoveredCallback = NSConsumerService::getInstance()->getProviderDiscoveredCb();
nsProvider->setProviderState((NSProviderState)state);
auto topicLL = NSConsumerGetTopicList(provider->providerId);
auto discoveredCallback = NSConsumerService::getInstance()->getProviderDiscoveredCb();
nsProvider->setProviderState((NSProviderState)state);
auto topicLL = NSConsumerGetTopicList(provider->providerId);
- nsProvider->setTopicList(new NSTopicsList(topicLL));
+ nsProvider->setTopicList(std::make_shared<NSTopicsList>(topicLL, false));
NSConsumerService::getInstance()->getAcceptedProviders()->addProvider(nsProvider);
if (state == NS_DISCOVERED)
{
NSConsumerService::getInstance()->getAcceptedProviders()->addProvider(nsProvider);
if (state == NS_DISCOVERED)
{
else if (state == NS_TOPIC)
{
auto topicLL = NSConsumerGetTopicList(provider->providerId);
else if (state == NS_TOPIC)
{
auto topicLL = NSConsumerGetTopicList(provider->providerId);
- oldProvider->setTopicList(new NSTopicsList(topicLL));
+ oldProvider->setTopicList(std::make_shared<NSTopicsList>(topicLL, false));
if (changeCallback != NULL)
{
NS_LOG(DEBUG, "initiating the callback for Response : NS_TOPIC");
if (changeCallback != NULL)
{
NS_LOG(DEBUG, "initiating the callback for Response : NS_TOPIC");
else if (state == NS_STOPPED)
{
oldProvider->setProviderSubscribedState(NSProviderSubscribedState::DENY);
else if (state == NS_STOPPED)
{
oldProvider->setProviderSubscribedState(NSProviderSubscribedState::DENY);
+ oldProvider->getTopicList()->unsetModifiability();
NSConsumerService::getInstance()->getAcceptedProviders()->removeProvider(
oldProvider->getProviderId());
NS_LOG(DEBUG, "initiating the State callback : NS_STOPPED");
NSConsumerService::getInstance()->getAcceptedProviders()->removeProvider(
oldProvider->getProviderId());
NS_LOG(DEBUG, "initiating the State callback : NS_STOPPED");
m_state = NSProviderState::DENY;\r
m_subscribedState = NSProviderSubscribedState::DENY;\r
\r
m_state = NSProviderState::DENY;\r
m_subscribedState = NSProviderSubscribedState::DENY;\r
\r
- m_topicList = new NSTopicsList();\r
+ m_topicList = std::make_shared<NSTopicsList>();\r
\r
if (provider != nullptr)\r
{\r
\r
if (provider != nullptr)\r
{\r
NSProvider::NSProvider(const NSProvider &provider)\r
{\r
m_providerId = provider.getProviderId();\r
NSProvider::NSProvider(const NSProvider &provider)\r
{\r
m_providerId = provider.getProviderId();\r
- m_topicList = new NSTopicsList();\r
+ m_topicList = std::make_shared<NSTopicsList>();\r
auto topicsList = provider.getTopicList();\r
if (topicsList != nullptr)\r
{\r
for (auto it : topicsList->getTopicsList())\r
{\r
auto topicsList = provider.getTopicList();\r
if (topicsList != nullptr)\r
{\r
for (auto it : topicsList->getTopicsList())\r
{\r
- getTopicList()->addTopic(it->getTopicName(), it->getState());\r
+ getTopicList()->addTopic(it.getTopicName(), it.getState());\r
}\r
}\r
setListener(provider.getProviderStateReceivedCb(), provider.getMessageReceivedCb(),\r
}\r
}\r
setListener(provider.getProviderStateReceivedCb(), provider.getMessageReceivedCb(),\r
NSProvider &NSProvider::operator=(const NSProvider &provider)\r
{\r
this->m_providerId = provider.getProviderId();\r
NSProvider &NSProvider::operator=(const NSProvider &provider)\r
{\r
this->m_providerId = provider.getProviderId();\r
- this->m_topicList = new NSTopicsList();\r
+ this->m_topicList = std::make_shared<NSTopicsList>();\r
auto topicsList = provider.getTopicList();\r
if (topicsList != nullptr)\r
{\r
for (auto it : topicsList->getTopicsList())\r
{\r
auto topicsList = provider.getTopicList();\r
if (topicsList != nullptr)\r
{\r
for (auto it : topicsList->getTopicsList())\r
{\r
- this->getTopicList()->addTopic(it->getTopicName(), it->getState());\r
+ this->getTopicList()->addTopic(it.getTopicName(), it.getState());\r
}\r
}\r
this->setListener(provider.getProviderStateReceivedCb(), provider.getMessageReceivedCb(),\r
}\r
}\r
this->setListener(provider.getProviderStateReceivedCb(), provider.getMessageReceivedCb(),\r
- NSProvider::~NSProvider()\r
- {\r
- if (m_topicList != nullptr)\r
- {\r
- delete m_topicList;\r
- }\r
- }\r
-\r
std::string NSProvider::getProviderId() const\r
{\r
return m_providerId;\r
}\r
\r
std::string NSProvider::getProviderId() const\r
{\r
return m_providerId;\r
}\r
\r
- NSTopicsList *NSProvider::getTopicList() const\r
+ std::shared_ptr<NSTopicsList> NSProvider::getTopicList() const\r
{\r
NS_LOG(DEBUG, "getTopicList - IN");\r
if (!isValid())\r
{\r
return nullptr;\r
}\r
{\r
NS_LOG(DEBUG, "getTopicList - IN");\r
if (!isValid())\r
{\r
return nullptr;\r
}\r
- NSTopicsList *topicList = new NSTopicsList();\r
+ std::shared_ptr<NSTopicsList> topicList = std::make_shared<NSTopicsList>();\r
for (auto it : m_topicList->getTopicsList())\r
{\r
for (auto it : m_topicList->getTopicsList())\r
{\r
- topicList->addTopic(it->getTopicName(), it->getState());\r
+ topicList->addTopic(it.getTopicName(), it.getState());\r
+ topicList->unsetModifiability();\r
return topicList;\r
}\r
\r
return topicList;\r
}\r
\r
- NSResult NSProvider::updateTopicList(NSTopicsList *topicList)\r
+ NSResult NSProvider::updateTopicList(std::shared_ptr<NSTopicsList> topicList)\r
{\r
NS_LOG(DEBUG, "updateTopicList - IN");\r
if (!isValid())\r
{\r
NS_LOG(DEBUG, "updateTopicList - IN");\r
if (!isValid())\r
return NSResult::ERROR;\r
}\r
topic->topicName = NULL;\r
return NSResult::ERROR;\r
}\r
topic->topicName = NULL;\r
- topic->topicName = OICStrdup(it->getTopicName().c_str());\r
- topic->state = (::NSTopicState)it->getState();\r
+ topic->topicName = OICStrdup(it.getTopicName().c_str());\r
+ topic->state = (::NSTopicState)it.getState();\r
topic->next = NULL;\r
if (topicLL == NULL)\r
{\r
topic->next = NULL;\r
if (topicLL == NULL)\r
{\r
return m_syncInfoCb;\r
}\r
\r
return m_syncInfoCb;\r
}\r
\r
- void NSProvider::setTopicList(NSTopicsList *topicsList)\r
+ void NSProvider::setTopicList(std::shared_ptr<NSTopicsList> topicsList)\r
- if (m_topicList != nullptr)\r
- {\r
- delete m_topicList;\r
- }\r
m_topicList = topicsList;\r
}\r
\r
m_topicList = topicsList;\r
}\r
\r
{
for (auto it : topicList->getTopicsList())
{
{
for (auto it : topicList->getTopicsList())
{
- std::cout << "Topic Name: " << it->getTopicName() << std::endl;
- std::cout << "Topic state: " << (int) it->getState() << std::endl;
+ std::cout << "Topic Name: " << it.getTopicName() << std::endl;
+ std::cout << "Topic state: " << (int) it.getState() << std::endl;
{
for (auto it : topicList->getTopicsList())
{
{
for (auto it : topicList->getTopicsList())
{
- std::cout << "Topic Name: " << it->getTopicName() << std::endl;
- std::cout << "Topic state: " << (int) it->getState() << std::endl;
+ std::cout << "Topic Name: " << it.getTopicName() << std::endl;
+ std::cout << "Topic state: " << (int) it.getState() << std::endl;
NSConsumerService::getInstance()->getProvider(mainProvider);
if (provider != nullptr)
{
NSConsumerService::getInstance()->getProvider(mainProvider);
if (provider != nullptr)
{
- NSTopicsList *topicList = new NSTopicsList();
+ std::shared_ptr<NSTopicsList> topicList = std::make_shared<NSTopicsList>();
topicList->addTopic("OCF_TOPIC1", NSTopic::NSTopicState::SUBSCRIBED);
topicList->addTopic("OCF_TOPIC2", NSTopic::NSTopicState::SUBSCRIBED);
topicList->addTopic("OCF_TOPIC3", NSTopic::NSTopicState::UNSUBSCRIBED);
provider->updateTopicList(topicList);
topicList->addTopic("OCF_TOPIC1", NSTopic::NSTopicState::SUBSCRIBED);
topicList->addTopic("OCF_TOPIC2", NSTopic::NSTopicState::SUBSCRIBED);
topicList->addTopic("OCF_TOPIC3", NSTopic::NSTopicState::UNSUBSCRIBED);
provider->updateTopicList(topicList);
for (auto it : nsTopics->getTopicsList())
{
for (auto it : nsTopics->getTopicsList())
{
- std::cout << it->getTopicName() << std::endl;
- std::cout << (int) it->getState() << std::endl;
+ std::cout << it.getTopicName() << std::endl;
+ std::cout << (int) it.getState() << std::endl;
}
std::cout << "GetConsumerTopicList completed" << std::endl;
}
}
std::cout << "GetConsumerTopicList completed" << std::endl;
}
for (auto it : nsTopics->getTopicsList())
{
for (auto it : nsTopics->getTopicsList())
{
- std::cout << it->getTopicName() << std::endl;
- std::cout << (int) it->getState() << std::endl;
+ std::cout << it.getTopicName() << std::endl;
+ std::cout << (int) it.getState() << std::endl;
break;
}
#ifdef WITH_CLOUD
break;
}
#ifdef WITH_CLOUD
\r
\r
#include <string>\r
\r
\r
#include <string>\r
#include "NSCommon.h"\r
#include "NSUtils.h"\r
#include "NSTopicsList.h"\r
#include "NSCommon.h"\r
#include "NSUtils.h"\r
#include "NSTopicsList.h"\r
* Request topic list with selection state for the consumer\r
* @return :: Topic list\r
*/\r
* Request topic list with selection state for the consumer\r
* @return :: Topic list\r
*/\r
- NSTopicsList *getConsumerTopicList();\r
+ std::shared_ptr<NSTopicsList> getConsumerTopicList();\r
\r
private:\r
::NSConsumer *getNSConsumer();\r
\r
private:\r
::NSConsumer *getNSConsumer();\r
* Request topics list already registered by provider user\r
* @return :: Topic list\r
*/\r
* Request topics list already registered by provider user\r
* @return :: Topic list\r
*/\r
- NSTopicsList *getRegisteredTopicList();\r
+ std::shared_ptr<NSTopicsList> getRegisteredTopicList();\r
\r
/**\r
* get Provider config values\r
\r
/**\r
* get Provider config values\r
- NSTopicsList *NSConsumer::getConsumerTopicList()\r
+ std::shared_ptr<NSTopicsList> NSConsumer::getConsumerTopicList()\r
{\r
NS_LOG(DEBUG, "getConsumerTopicList - IN");\r
if (!isValid())\r
{\r
NS_LOG(DEBUG, "getConsumerTopicList - IN");\r
if (!isValid())\r
}\r
::NSTopicLL *topics = NSProviderGetConsumerTopics(getConsumerId().c_str());\r
\r
}\r
::NSTopicLL *topics = NSProviderGetConsumerTopics(getConsumerId().c_str());\r
\r
- NSTopicsList *nsTopics = new NSTopicsList(topics);\r
+ std::shared_ptr<NSTopicsList> nsTopics = std::make_shared<NSTopicsList>(topics, false);\r
NS_LOG(DEBUG, "getConsumerTopicList - OUT");\r
return nsTopics;\r
}\r
NS_LOG(DEBUG, "getConsumerTopicList - OUT");\r
return nsTopics;\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
{\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
NS_LOG(DEBUG, "getRegisteredTopicList - OUT");\r
return nsTopics;\r
}\r
ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
- std::list<OIC::Service::NSTopic *> retTopic = g_provider->getTopicList()->getTopicsList();
+ auto retTopic = g_provider->getTopicList()->getTopicsList();
auto it1 = retTopic.begin();
auto it2 = topics.begin();
while ( it1 != retTopic.end() || it2 != topics.end() )
{
auto it1 = retTopic.begin();
auto it2 = topics.begin();
while ( it1 != retTopic.end() || it2 != topics.end() )
{
- if ((*it1)->getTopicName() != *it2)
+ if ((*it1).getTopicName() != *it2)
{
isSame = false; break;
}
{
isSame = false; break;
}
{
ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
{
ASSERT_NE(nullptr, g_provider) << "error: discovery failure";
- OIC::Service::NSTopicsList *retTopic = g_provider->getTopicList();
+ auto retTopic = g_provider->getTopicList();
for (auto it : retTopic->getTopicsList())
{
for (auto it : retTopic->getTopicsList())
{
- std::cout << "Topic Name: " << it->getTopicName() << std::endl;
- std::cout << "state : " << (int) it->getState() << std::endl;
- it->setState(OIC::Service::NSTopic::NSTopicState::SUBSCRIBED);
+ std::cout << "Topic Name: " << it.getTopicName() << std::endl;
+ std::cout << "state : " << (int) it.getState() << std::endl;
+ it.setState(OIC::Service::NSTopic::NSTopicState::SUBSCRIBED);
}
OIC::Service::NSResult ret = g_provider->updateTopicList(retTopic);
std::cout << "ret : " << (int) ret << std::endl;
}
OIC::Service::NSResult ret = g_provider->updateTopicList(retTopic);
std::cout << "ret : " << (int) ret << std::endl;
ASSERT_NE(nullptr, g_consumer) << "error: discovery failure";
g_consumer->acceptSubscription(false);
ASSERT_NE(nullptr, g_consumer) << "error: discovery failure";
g_consumer->acceptSubscription(false);
OIC::Service::NSMessage msg = OIC::Service::NSProviderService::getInstance()->createMessage();
msgID = (int)msg.getMessageId();
msg.setTitle(std::string("Title"));
OIC::Service::NSMessage msg = OIC::Service::NSProviderService::getInstance()->createMessage();
msgID = (int)msg.getMessageId();
msg.setTitle(std::string("Title"));
std::unique_lock< std::mutex > lock { mutexForCondition };
responseCon.wait_for(lock, g_waitForResponse);
bool isSame = false;
std::unique_lock< std::mutex > lock { mutexForCondition };
responseCon.wait_for(lock, g_waitForResponse);
bool isSame = false;
- OIC::Service::NSTopicsList *topicList =
OIC::Service::NSProviderService::getInstance()->getRegisteredTopicList();
if (!topicList)
{
OIC::Service::NSProviderService::getInstance()->getRegisteredTopicList();
if (!topicList)
{
int i = 0;
for (auto itr : topicList->getTopicsList())
{
int i = 0;
for (auto itr : topicList->getTopicsList())
{
- compString[i] = itr->getTopicName(); i++;
+ compString[i] = itr.getTopicName(); i++;
}
std::cout << compString[0] << std::endl;
std::cout << compString[1] << std::endl;
}
std::cout << compString[0] << std::endl;
std::cout << compString[1] << std::endl;
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str1);
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str2);
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str1);
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str2);
- if (topicList != nullptr)
- {
- delete topicList;
- }
responseCon.wait_for(lock, g_waitForResponse);
}
responseCon.wait_for(lock, g_waitForResponse);
}
std::unique_lock< std::mutex > lock { mutexForCondition };
responseCon.wait_for(lock, g_waitForResponse);
bool isSame = false;
std::unique_lock< std::mutex > lock { mutexForCondition };
responseCon.wait_for(lock, g_waitForResponse);
bool isSame = false;
- OIC::Service::NSTopicsList *topicList =
OIC::Service::NSProviderService::getInstance()->getRegisteredTopicList();
if (!topicList)
{
OIC::Service::NSProviderService::getInstance()->getRegisteredTopicList();
if (!topicList)
{
- std::list<OIC::Service::NSTopic *>::iterator it = topicList->getTopicsList().begin();
- std::string compStr = (*it)->getTopicName() ;
+ auto topic = topicList->getTopicsList();
+ auto it = topic.begin();
+ std::string compStr = (*it).getTopicName() ;
std::cout << compStr << std::endl;
if (str1.compare(compStr) == 0 )
{
std::cout << compStr << std::endl;
if (str1.compare(compStr) == 0 )
{
EXPECT_EQ(isSame, true);
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str1);
EXPECT_EQ(isSame, true);
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str1);
- if (topicList != nullptr)
- {
- delete topicList;
- }
responseCon.wait_for(lock, g_waitForResponse);
}
responseCon.wait_for(lock, g_waitForResponse);
}
responseCon.wait_for(lock, g_waitForResponse);
bool isSame = false;
responseCon.wait_for(lock, g_waitForResponse);
bool isSame = false;
- OIC::Service::NSTopicsList *topicList = g_consumer->getConsumerTopicList();
+ auto topicList = g_consumer->getConsumerTopicList();
int i = 0, state[10] = {0};
for (auto itr : topicList->getTopicsList())
{
int i = 0, state[10] = {0};
for (auto itr : topicList->getTopicsList())
{
- compString[i] = itr->getTopicName();
- state[i++] = (int) itr->getState();
+ compString[i] = itr.getTopicName();
+ state[i++] = (int) itr.getState();
}
std::cout << compString[0] << std::endl;
std::cout << compString[1] << std::endl;
}
std::cout << compString[0] << std::endl;
std::cout << compString[1] << std::endl;
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str1);
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str2);
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str1);
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str2);
- if (topicList != nullptr)
- {
- delete topicList;
- }
responseCon.wait_for(lock, g_waitForResponse);
}
responseCon.wait_for(lock, g_waitForResponse);
}
responseCon.wait_for(lock, g_waitForResponse);
bool isSame = false;
responseCon.wait_for(lock, g_waitForResponse);
bool isSame = false;
- OIC::Service::NSTopicsList *topicList = g_consumer->getConsumerTopicList();
+ auto topicList = g_consumer->getConsumerTopicList();
int i = 0, state[10] = {0};
for (auto itr : topicList->getTopicsList())
{
int i = 0, state[10] = {0};
for (auto itr : topicList->getTopicsList())
{
- compString[i] = itr->getTopicName();
- state[i++] = (int) itr->getState();
+ compString[i] = itr.getTopicName();
+ state[i++] = (int) itr.getState();
}
std::cout << compString[0] << std::endl;
std::cout << compString[1] << std::endl;
}
std::cout << compString[0] << std::endl;
std::cout << compString[1] << std::endl;
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str1);
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str2);
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str1);
OIC::Service::NSProviderService::getInstance()->unregisterTopic(str2);
-
- if (topicList != nullptr)
- {
- delete topicList;
- }
responseCon.wait_for(lock, g_waitForResponse);
}
responseCon.wait_for(lock, g_waitForResponse);
}