replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / service / notification / cpp-wrapper / provider / inc / NSProviderService.h
index f96d239..575ea93 100755 (executable)
@@ -38,26 +38,26 @@ namespace OIC
 {\r
     namespace Service\r
     {\r
+        class NSAcceptedConsumers;\r
         /**\r
          * @class   NSProviderService\r
          * @brief   This class provides a set of C++APIs for Notification Provider.\r
          */\r
         class NSProviderService\r
         {\r
-\r
             public:\r
                 /**\r
                       * Provider uses this callback function to receive subscription request of consumer\r
                       * @param[in] consumer  Consumer who subscribes the notification message resource\r
                       */\r
-                typedef void (*ConsumerSubscribedCallback)(NSConsumer *);\r
+                typedef void (*ConsumerSubscribedCallback)(std::shared_ptr<NSConsumer> );\r
 \r
                 /**\r
                       * Provider use this callback function to receive the status of the message\r
                       * synchronization\r
                       * @param[in] sync Synchronization information of the notification message\r
                       */\r
-                typedef void (*MessageSynchronizedCallback)(NSSyncInfo *);\r
+                typedef void (*MessageSynchronizedCallback)(NSSyncInfo );\r
 \r
 \r
                 /**\r
@@ -118,25 +118,34 @@ namespace OIC
                 NSResult disableRemoteService(const std::string &serverAddress);\r
 \r
                 /**\r
+                      * Request to subscribe to remote MQ address as parameter.\r
+                      * @param[in] server address combined with IP address and port number and MQ broker uri using delimiter :\r
+                      * @param[in] topicName the interest Topic name for subscription.\r
+                      * @return ::NS_OK or result code of NSResult\r
+                      */\r
+                NSResult subscribeMQService(const std::string &serverAddress, const std::string &topicName);\r
+\r
+                /**\r
                       * Send notification message to all subscribers\r
                       * @param[in]  msg  Notification message including id, title, contentText\r
                       * @return :: result code of Provider Service\r
                       */\r
-                NSResult sendMessage(NSMessage *msg);\r
+                NSResult sendMessage(const NSMessage &msg);\r
 \r
 \r
                 /**\r
                       * Send read-check to provider in order to synchronize notification status with other consumers\r
                       * @param[in]  messageId  ID of Notification message to synchronize the status\r
                       * @param[in]  type  NotificationSyncType of the SyncInfo message\r
+                      * @return :: OK or result code of NSResult\r
                       */\r
-                void sendSyncInfo(uint64_t messageId, NSSyncInfo::NSSyncType type);\r
+                NSResult sendSyncInfo(uint64_t messageId, NSSyncInfo::NSSyncType type);\r
 \r
                 /**\r
                      * Initialize NSMessage class, This function is valid only when subControllability is set true.\r
                      * @return NSMessage *\r
                      */\r
-                NSMessage *createMessage();\r
+                NSMessage createMessage();\r
 \r
                 /**\r
                      * Add topic to topic list which is located in provider service storage\r
@@ -156,7 +165,7 @@ namespace OIC
                      * 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
@@ -168,33 +177,31 @@ namespace OIC
                       *  request to get NSConsumer pointer\r
                       * @param id -id as string\r
                       *\r
-                      * @return pointer to NSConsumer\r
+                      * @return shared pointer to NSConsumer\r
                       */\r
-                NSConsumer *getConsumer(const std::string &id);\r
+                std::shared_ptr<NSConsumer> getConsumer(const std::string &id);\r
 \r
                 /**\r
-                      *  get list of Consumers accepted.\r
-                      * @return m_acceptedConsumers -list of accepted Consumers\r
+                      *  get handle of Consumers accepted.\r
+                      * @return m_acceptedConsumers -accepted Consumers\r
                       */\r
-                std::list<NSConsumer *> &getAcceptedConsumers();\r
+                NSAcceptedConsumers *getAcceptedConsumers();\r
 \r
             private :\r
                 ProviderConfig m_config;\r
-                std::list<NSConsumer *> m_acceptedConsumers;\r
+                NSAcceptedConsumers *m_acceptedConsumers;\r
 \r
             private:\r
-                NSProviderService()\r
-                {\r
-                    m_config.m_subscribeRequestCb = NULL;\r
-                    m_config.m_syncInfoCb = NULL;\r
-                }\r
+                NSProviderService();\r
                 ~NSProviderService();\r
                 NSProviderService(const NSProviderService &) = delete;\r
                 NSProviderService &operator=(const NSProviderService &) = delete;\r
                 NSProviderService(const NSProviderService &&) = delete;\r
                 NSProviderService &operator=(const NSProviderService && ) = delete;\r
 \r
-                ::NSMessage *getNSMessage(NSMessage *msg);\r
+                ::NSMessage *getNSMessage(const NSMessage &msg);\r
+                static void onConsumerSubscribedCallback(::NSConsumer *consumer);\r
+                static void onMessageSynchronizedCallback(::NSSyncInfo *syncInfo);\r
         };\r
     }\r
 }\r