Merge branch 'notification-service'
[platform/upstream/iotivity.git] / service / notification / cpp-wrapper / consumer / inc / NSProvider.h
index 5ace980..06556c2 100755 (executable)
@@ -31,6 +31,8 @@
 #include <string>\r
 #include "NSSyncInfo.h"\r
 #include "NSMessage.h"\r
+#include "NSUtils.h"\r
+#include "NSTopicsList.h"\r
 \r
 namespace OIC\r
 {\r
@@ -43,6 +45,13 @@ namespace OIC
         class NSProvider\r
         {\r
             public:\r
+\r
+                /**\r
+                     * Invoked when the provider state is changed\r
+                     * @param[in] providerState  NSProviderState of the notification resource\r
+                     */\r
+                typedef void (* ProviderStateCallback)(NSProviderState);\r
+\r
                 /**\r
                      * Consumer use this callback function to receive notification message from provider\r
                      * synchronization\r
@@ -60,7 +69,8 @@ namespace OIC
                 /**\r
                       * Constructor of NSProvider.\r
                       */\r
-                NSProvider(): m_messageCb(NULL), m_syncInfoCb(NULL) {}\r
+                NSProvider(): m_topicList(new NSTopicsList()), m_state(NSProviderState::DENY),\r
+                    m_stateCb(NULL), m_messageCb(NULL), m_syncInfoCb(NULL) {}\r
 \r
                 /**\r
                       * Constructor of NSProvider.\r
@@ -68,7 +78,18 @@ namespace OIC
                       * @param providerId - providerId of the Notification.\r
                       */\r
                 NSProvider(const std::string &providerId) : m_providerId(providerId),\r
-                    m_messageCb(NULL), m_syncInfoCb(NULL) {}\r
+                    m_topicList(new NSTopicsList()), m_state(NSProviderState::DENY),\r
+                    m_stateCb(NULL), m_messageCb(NULL), m_syncInfoCb(NULL)  {}\r
+\r
+                /**\r
+                      * Constructor of NSProvider.\r
+                      *\r
+                      * @param providerId - providerId of the Notification.\r
+                      * @param topicList - NSTopicsList of interested Topics.\r
+                      */\r
+                NSProvider(const std::string &providerId, NSTopicsList *topicList) : m_providerId(\r
+                        providerId), m_topicList(topicList), m_state(NSProviderState::DENY),\r
+                    m_stateCb(NULL), m_messageCb(NULL), m_syncInfoCb(NULL)  {}\r
 \r
                 /**\r
                       * Constructor of NSProvider.\r
@@ -77,11 +98,25 @@ namespace OIC
                       */\r
                 NSProvider(::NSProvider *provider);\r
 \r
+                /**\r
+                     * Copy Constructor of NSProvider.\r
+                     *\r
+                     * @param provider - NSProvider to initialize.\r
+                     */\r
+                NSProvider(const NSProvider &provider);\r
+\r
+                /**\r
+                     * Copy assignment operator of NSProvider.\r
+                     *\r
+                     * @param provider -  NSProvider to initialize.\r
+                     * @return NSProvider object reference\r
+                     */\r
+                NSProvider &operator=(const NSProvider &provider);\r
 \r
                 /**\r
                       * Destructor of NSProvider.\r
                       */\r
-                ~NSProvider() = default;\r
+                ~NSProvider();\r
 \r
                 /**\r
                       * This method is for getting ProviderId from the Notification service provider.\r
@@ -91,16 +126,38 @@ namespace OIC
                 std::string getProviderId() const;\r
 \r
                 /**\r
+                      * This method is for getting NSTopic List from the Notification service provider.\r
+                      *\r
+                      * @return NSTopicsList  as pointer.\r
+                      */\r
+                NSTopicsList *getTopicList() const;\r
+\r
+                /**\r
+                     * Update Topic list that is wanted to be subscribed from provider\r
+                     *\r
+                     * @param topicList - NSTopicsList of interested Topics.\r
+                     * @return NSResult\r
+                     */\r
+                NSResult updateTopicList(NSTopicsList *topicList);\r
+\r
+                /**\r
+                      * This method is for getting ProviderState from the Notification service provider.\r
+                      *\r
+                      * @return ProviderState as NSProviderState.\r
+                      */\r
+                NSProviderState getProviderState() const;\r
+\r
+                /**\r
                       * This method is for requesting subscription of Notification service.\r
                       *\r
                       */\r
                 void subscribe();\r
 \r
                 /**\r
-                      * This method is for requesting unsubscription of Notification service.\r
+                      * This method is for requesting subscription status from Provider of Notification service.\r
                       *\r
                       */\r
-                void unSubscribe();\r
+                bool isSubscribed();\r
 \r
                 /**\r
                       * This method is for Sending SyncInfo of Notification service.\r
@@ -108,39 +165,65 @@ namespace OIC
                       * @param messageId - id of type message.\r
                       * @param type - NSSyncType of Notification service.\r
                       */\r
-                void SendSyncInfo(uint64_t messageId, NSSyncInfo::NSSyncType type);\r
+                void sendSyncInfo(uint64_t messageId, NSSyncInfo::NSSyncType type);\r
 \r
                 /**\r
                       * This method is for registering for listeners of Notification .\r
                       *\r
+                      * @param stateHandle - ProviderStateCallback callback.\r
                       * @param messageHandle - MessageReceivedCallback callback.\r
                       * @param syncHandle - SyncInfoReceivedCallback callback\r
                       */\r
-                void setListener(MessageReceivedCallback messageHandle,\r
+                void setListener(ProviderStateCallback stateHandle,\r
+                                 MessageReceivedCallback messageHandle,\r
                                  SyncInfoReceivedCallback syncHandle);\r
 \r
                 /**\r
+                      * This method is for getting the registered cb of Provider State received.\r
+                      *\r
+                      * @return stateCb - ProviderStateCallback .\r
+                      */\r
+                ProviderStateCallback getProviderStateReceivedCb() const;\r
+\r
+                /**\r
                       * This method is for getting the registered cb of Notification message received.\r
                       *\r
                       * @return messageCb - MessageReceivedCallback .\r
                       */\r
-                MessageReceivedCallback getMessageReceivedCb();\r
+                MessageReceivedCallback getMessageReceivedCb() const;\r
 \r
                 /**\r
                       * This method is for getting the registered cb of Notification SyncInfo received.\r
                       *\r
                       * @return syncInfoCb - SyncInfoReceivedCallback .\r
                       */\r
-                SyncInfoReceivedCallback getSyncInfoReceivedCb();\r
+                SyncInfoReceivedCallback getSyncInfoReceivedCb() const;\r
+\r
+                /**\r
+                      * This method is for setting NSTopic List for the Notification service provider.\r
+                      *\r
+                      * @param topicsList  as NSTopicsList pointer.\r
+                      */\r
+                void setTopicList(NSTopicsList *topicsList);\r
+\r
+                /**\r
+                     * This method is for setting ProviderState for the Notification service provider.\r
+                     *\r
+                     * @param providerState as NSProviderState.\r
+                     */\r
+                void setProviderState(const NSProviderState &providerState);\r
 \r
             private:\r
                 ::NSProvider *getNSProvider();\r
 \r
             private:\r
                 std::string m_providerId;\r
+                NSTopicsList *m_topicList;\r
+                NSProviderState m_state;\r
+\r
+                ProviderStateCallback m_stateCb;\r
                 MessageReceivedCallback m_messageCb;\r
                 SyncInfoReceivedCallback m_syncInfoCb;\r
-\r
         };\r
     }\r
 }\r