replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / service / notification / cpp-wrapper / consumer / inc / NSConsumerService.h
index 3be2595..0c020f0 100755 (executable)
 #ifndef _NS_CONSUMER_SERVICE_H_\r
 #define _NS_CONSUMER_SERVICE_H_\r
 \r
-#include "NSCommon.h"\r
-#include "NSConsumerInterface.h"\r
-#include <list>\r
 #include <algorithm>\r
-#include "NSConstants.h"\r
+#include "NSProvider.h"\r
+#include "NSUtils.h"\r
 \r
 \r
 namespace OIC\r
 {\r
     namespace Service\r
     {\r
-        class NSProvider;\r
+        class NSAcceptedProviders;\r
         /**\r
          * @class   NSConsumerService\r
          * @brief   This class provides a set of C++APIs for Notification Consumer.\r
          */\r
         class NSConsumerService\r
         {\r
-\r
             public :\r
                 /**\r
                      * Consumer uses this callback function to receive the discovered providers\r
                      * @param[in] provider        Provider who has the notification resource\r
                      */\r
-                typedef void (*ProviderDiscoveredCallback)(NSProvider *);\r
-\r
-                /**\r
-                     * Consumer uses this callback function on subscription accepted by provider\r
-                     * @param[in] provider        Provider who has the notification resource\r
-                     */\r
-                typedef void (* AcceptedCallback)(NSProvider *);\r
-\r
-                /**\r
-                     * @struct   ConsumerConfig\r
-                     * @brief Consumer sets this callback function configuration for registering callbacks\r
-                     *\r
-                     */\r
-                typedef struct\r
-                {\r
-                    /** m_discoverCb - ProviderDiscoveredCallback callback listener.*/\r
-                    ProviderDiscoveredCallback m_discoverCb;\r
-                    /** m_acceptedCb - AcceptedCallback callback listener.*/\r
-                    AcceptedCallback m_acceptedCb;\r
-                } ConsumerConfig;\r
+                typedef void (*ProviderDiscoveredCallback)(std::shared_ptr<NSProvider> );\r
 \r
                 /**\r
                       * API for getting the Instance of NSConsumerService class\r
@@ -82,51 +60,61 @@ namespace OIC
 \r
                 /**\r
                       * Initialize notification service for consumer\r
-                      * @param[in]  config   ConsumerConfig Callback function pointers to onDiscoverd,\r
-                      * OnAccepted, OnMessageReceived and OnSyncInfoReceived functions\r
+                      * @param providerDiscovered Callback function pointers to ProviderDiscoveredCallback,\r
+                      * @return ::NS_OK or result code of NSResult\r
                       */\r
-                void Start(ConsumerConfig config);\r
+                NSResult start(ProviderDiscoveredCallback providerDiscovered);\r
 \r
                 /**\r
                       * Terminate notification service for consumer\r
+                      * @return ::NS_OK or result code of NSResult\r
                       */\r
-                void Stop();\r
+                NSResult stop();\r
 \r
                 /**\r
                      * Request to discover to remote address as parameter.\r
-                     * @param[in]  server address combined with IP address and port number using delimiter :\r
-                     * @return  result code of NSResult\r
+                     * @param[in]  serverAddress combined with IP address and port number using delimiter :\r
+                     * @return  NSResult code of Consumer Service\r
                      */\r
-                NSResult EnableRemoteService(const std::string &serverAddress);\r
+                NSResult enableRemoteService(const std::string &serverAddress);\r
 \r
                 /**\r
-                      * Request discovery manually\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
-                void RescanProvider();\r
+                NSResult subscribeMQService(const std::string &serverAddress, const std::string &topicName);\r
 \r
                 /**\r
-                      *  request to get NSProvider pointer\r
-                      * @param id -id as string\r
-                      *\r
-                      * @return pointer to NSProvider\r
+                      * Request discovery manually\r
+                      * @return ::NS_OK or result code of NSResult\r
                       */\r
-                NSProvider *getProvider(const std::string &id);\r
+                NSResult rescanProvider();\r
 \r
                 /**\r
-                      *  get consumer config values\r
-                      * @return ConsumerConfig callbaks set\r
+                      *  get the callback for ProviderDiscovered\r
+                      * @return ProviderDiscoveredCallback callbak set\r
                       */\r
-                ConsumerConfig getConsumerConfig();\r
+                ProviderDiscoveredCallback getProviderDiscoveredCb();\r
+\r
+                /**\r
+                     *  request to get NSProvider pointer\r
+                     * @param id -id as string\r
+                     *\r
+                     * @return shared pointer to NSProvider\r
+                     */\r
+                std::shared_ptr<NSProvider> getProvider(const std::string &id);\r
 \r
                 /**\r
-                      *  get list of providers acceted.\r
-                      * @return m_acceptedProviders -list of accepted providers\r
+                      *  get handle of providers accepted.\r
+                      * @return m_acceptedProviders -accepted providers\r
                       */\r
-                std::list<NSProvider *> getAcceptedProviders();\r
+                NSAcceptedProviders *getAcceptedProviders();\r
 \r
             private :\r
-                ConsumerConfig m_config;\r
-                std::list<NSProvider *> m_acceptedProviders;\r
+                ProviderDiscoveredCallback m_providerDiscoveredCb;\r
+                NSAcceptedProviders *m_acceptedProviders;\r
 \r
             private :\r
                 NSConsumerService();\r
@@ -136,6 +124,10 @@ namespace OIC
                 NSConsumerService(const NSConsumerService &&) = delete;\r
                 NSConsumerService &operator=(const NSConsumerService && ) = delete;\r
 \r
+                static void onProviderStateReceived(::NSProvider *provider, ::NSProviderState state);\r
+                static void onNSMessageReceived(::NSMessage *message);\r
+                static void onNSSyncInfoReceived(::NSSyncInfo *syncInfo);\r
+\r
         };\r
     }\r
 }\r