replace : iotivity -> iotivity-sec
[platform/upstream/iotivity.git] / service / notification / include / NSProviderInterface.h
index af9c19f..260c554 100644 (file)
@@ -35,17 +35,16 @@ extern "C"
 #include "NSCommon.h"\r
 #include <stdbool.h>\r
 #include <stdint.h>\r
-\r
 /**\r
- * Provider uses this callback function to receive subscription request of consumer\r
- * @param[in] consumer        Consumer who subscribes the resource\r
+ * Invoked when provider receives the subscription request of consumer.\r
+ * @param[in] consumer  Consumer who subscribes the notification message resource\r
  */\r
 typedef void (*NSSubscribeRequestCallback)(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
+ * Invoked when synchronization data which has notification message\r
+ * read/deleted event from consumer is received.\r
+ * @param[in] sync  Synchronization information of the notification message\r
  */\r
 typedef void (*NSProviderSyncInfoCallback)(NSSyncInfo *);\r
 \r
@@ -58,76 +57,85 @@ typedef struct
     NSSubscribeRequestCallback subRequestCallback;\r
     /* Invoked when the synchronization data, read and deleted, is sent by consumer is received */\r
     NSProviderSyncInfoCallback syncInfoCallback;\r
-    /* Set the policy for notification servcie refering to following\r
-     * if policy is true, provider decides to allow or deny for all the subscribing consumers.\r
-     * Otherwise(policy is false) consumer decides to request subscription to discovered providers.\r
+    /* Set the policy for notification servcie which checks whether provider is capable of \r
+     * denying the subscription of notification message from consumer\r
+     * and getting controllabliity to set consumer topic list.\r
+     * If true, provider is able to control subscription request and consumer topic list.\r
+     * Otherwise(policy is false), consumer can do the same.\r
      */\r
-    bool policy;\r
-    /* User Information */\r
+    bool subControllability;\r
+    /* User defined information such as device friendly name */\r
     char * userInfo;\r
+    /* Set on/off for secure resource channel setting */\r
+    bool resourceSecurity;\r
 \r
 } NSProviderConfig;\r
 \r
 /**\r
- * Initialize notification service for provider service\r
+ * Initialize notification service for provider\r
  * @param[in]  config   Refer to NSProviderConfig\r
- * @return ::NS_OK or result code of NSResult\r
+ * @return ::NS_OK if the action is requested succesfully\r
  */\r
 NSResult NSStartProvider(NSProviderConfig config);\r
 \r
 /**\r
  * Terminate notification service for provider\r
- * @return ::NS_OK or result code of NSResult\r
+ * @return ::NS_OK if the action is requested succesfully\r
  */\r
 NSResult NSStopProvider();\r
 \r
 /**\r
- * Request to publish resource to cloud server\r
+ * Request to publish resource using remote relay server\r
  * @param[in]  server address combined with IP address and port number using delimiter :\r
- * @return ::NS_OK or result code of NSResult\r
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.\r
  */\r
 NSResult NSProviderEnableRemoteService(char * serverAddress);\r
 \r
 /**\r
- * Request to cancel remote service using cloud server\r
+ * Request to terminate remote service from relay server\r
  * @param[in]  server address combined with IP address and port number using delimiter :\r
- * @return ::NS_OK or result code of NSResult\r
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.\r
  */\r
 NSResult NSProviderDisableRemoteService(char * serverAddress);\r
 \r
+#ifdef WITH_MQ\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 NSProviderSubscribeMQService(const char * serverAddress, const char * topicName);\r
+#endif\r
+\r
 /**\r
  * Send notification message to all subscribers\r
  * @param[in]  message  Notification message including id, title, contentText\r
- * @return ::NS_OK or result code of NSResult\r
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.\r
  */\r
 NSResult NSSendMessage(NSMessage * msg);\r
 \r
 /**\r
  * Send acceptance to consumer who subscribes the resource of notification message\r
+ * This function is valid only when subControllability is set true.\r
  * @param[in]  consumer  Consumer who subscribes the resource\r
- * @param[in]  accepted  the result of acceptance; Allow or Deny\r
- * @return ::NS_OK or result code of NSResult\r
+ * @param[in]  accepted  the result of acceptance; ALLOW or DENY\r
+ * @return ::NS_OK if this function is requested succesfully\r
+ * or NS_FAIL if subContollability is false.\r
  */\r
 NSResult NSAcceptSubscription(const char * consumerId, bool accepted);\r
 \r
 /**\r
- * Get consumer list that is stored in the cache of notification service\r
- * @param[in]  list  Consumer list\r
- * @param[in]  size  the number of consumers stored in the cache\r
- * @return ::NS_OK or result code of NSResult\r
- */\r
-//TODO will use Function.\r
-// NSResult NSGetConsumerList(uint8_t *list, uint32_t size);\r
-\r
-/**\r
- * Send read-check to provider in order to synchronize notification status with other consumers\r
- * @param[in]  message  Notification message to synchronize the status\r
- * @return ::NS_OK or result code of NSResult\r
+ * Send synchronizad state of notificaion message to consumers\r
+ * @param[in]  messageiId  ID of notification message\r
+ * @param[in]  type  SyncType of the syncInfo message\r
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.\r
  */\r
 NSResult NSProviderSendSyncInfo(uint64_t messageId, NSSyncType type);\r
 \r
 /**\r
- * Initialize NSMessage struct, our service set message id and provider(device) id\r
+ * Initialize NSMessage struct.\r
+ * Service sets mandatory fields which message id and provider(device) id are filled with.\r
  * @return ::NSMessage *\r
  */\r
 NSMessage * NSCreateMessage();\r
@@ -135,14 +143,14 @@ NSMessage * NSCreateMessage();
 /**\r
  * Add topic to topic list which is located in provider service storage\r
  * @param[in]  topicName Topic name to add\r
- * @return ::NS_OK or result code of NSResult\r
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.\r
  */\r
-NSResult NSProivderRegisterTopic(const char * topicName);\r
+NSResult NSProviderRegisterTopic(const char * topicName);\r
 \r
 /**\r
  * Delete topic from topic list\r
  * @param[in]  topicName Topic name to delete\r
- * @return ::NS_OK or result code of NSResult\r
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if wrong parameter is set.\r
  */\r
 NSResult NSProviderUnregisterTopic(const char * topicName);\r
 \r
@@ -150,7 +158,7 @@ NSResult NSProviderUnregisterTopic(const char * topicName);
  * Select a topic name for a consumer\r
  * @param[in]  consumerId  consumer id for which the user on provider selects a topic\r
  * @param[in]  topicName Topic name to select\r
- * @return ::NS_OK or result code of NSResult\r
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if subContollability is false\r
  */\r
 NSResult NSProviderSetConsumerTopic(const char * consumerId, const char * topicName);\r
 \r
@@ -158,7 +166,7 @@ NSResult NSProviderSetConsumerTopic(const char * consumerId, const char * topicN
  * Unselect a topic from the topic list for consumer\r
  * @param[in]  consumerId  consumer id for which the user on provider unselects a topic\r
  * @param[in]  topicName Topic name to unselect\r
- * @return ::NS_OK or result code of NSResult\r
+ * @return ::NS_OK if the action is requested succesfully or NS_FAIL if subContollability is false\r
  */\r
 NSResult NSProviderUnsetConsumerTopic(const char * consumerId, const char * topicName);\r
 \r