[IOT-1558] Add notification consumer for windows.
[iotivity.git] / service / notification / src / common / NSConstants.h
1 //******************************************************************
2 //
3 // Copyright 2016 Samsung Electronics All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 #ifndef _NS_CONSTANTS_H_
22 #define _NS_CONSTANTS_H_
23
24 #define __PRINTLOG 0
25 #define __NS_FILE__ ( strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__ )
26
27 #include "logger.h"
28
29 #ifdef TB_LOG
30 #ifdef __TIZEN__
31 #include <dlog.h>
32 #ifdef LOG_TAG
33 #undef LOG_TAG
34 #endif // LOG_TAG
35 #define LOG_TAG "NotificationService"
36 #define NS_CONVERT_LEVEL(level) ( \
37         ((level) == 0) ? DLOG_DEBUG : \
38         ((level) == 1) ? DLOG_INFO : \
39         ((level) == 2) ? DLOG_WARN : \
40     ((level) == 3) ? DLOG_ERROR : DLOG_ERROR)
41 #define NS_LOG_V(level, format, ...) (dlog_print(NS_CONVERT_LEVEL(level), LOG_TAG, (format), __VA_ARGS__))
42 #define NS_LOG(level, msg) (dlog_print(NS_CONVERT_LEVEL(level), LOG_TAG, (msg)))
43 #else // __TIZEN__
44 #define NS_LOG_V(level, format, ...) (OIC_LOG_V((level), __NS_FILE__, (format), __VA_ARGS__))
45 #define NS_LOG(level, msg) (OIC_LOG((level), __NS_FILE__, (msg)))
46 #endif // __TIZEN__
47 #else // TB_LOG
48 #if (__PRINTLOG == 1)
49 #define NS_CONVERT_LEVEL(level) ( \
50         ((level) == 0) ? "DEBUG" : \
51         ((level) == 1) ? "INFO" : \
52         ((level) == 2) ? "WARNING" : \
53     ((level) == 3) ? "ERROR" : "FATAL")
54 #define NS_LOG_V(level, format, ...) \
55     { \
56         printf("%s: %s ", NS_CONVERT_LEVEL(level), __NS_FILE__); \
57         printf((format), __VA_ARGS__); \
58         printf("\n"); \
59     }
60 #define NS_LOG(level, msg) \
61     { \
62         printf("%s: %s ", NS_CONVERT_LEVEL(level), __NS_FILE__); \
63         printf((msg)); \
64         printf("\n"); \
65     }
66 #else // (__PRINTLOG == 1)
67 #define NS_CONVERT_LEVEL(level)
68 #define NS_LOG(level, msg)
69 #define NS_LOG_V(level, format, ...) NS_LOG((level), ((format), __VA_ARGS__))
70 #endif // (__PRINTLOG == 1)
71 #endif // TB_LOG
72
73 #define NS_TAG                     "IOT_NOTI"
74
75 // SCHEDULE //
76 #define THREAD_COUNT               5
77
78 // NOTIOBJ //
79 #define NOTIOBJ_TITLE_KEY          "title"
80 #define NOTIOBJ_ID_KEY             "id"
81 #define NOTOOBJ_CONTENT_KEY        "contenttext"
82
83 #define DISCOVERY_TAG              "NS_PROVIDER_DISCOVERY"
84 #define SUBSCRIPTION_TAG           "NS_PROVIDER_SUBSCRIPTION"
85 #define INTERFACE_TAG              "NS_PROVIDER_INTERFACE"
86 #define NOTIFICATION_TAG           "NS_PROVIDER_NOTIFICATION"
87 #define SCHEDULER_TAG              "NS_PROVIDER_SCHEDULER"
88 #define LISTENER_TAG               "NS_PROVIDER_LISTENER"
89 #define RESOURCE_TAG               "NS_PROVIDER_RESOURCE"
90 #define TOPIC_TAG                  "NS_PROVIDER_TOPIC"
91
92 #define NS_ROOT_TYPE               "oic.wk.notification"
93 #define NS_COLLECTION_MESSAGE_TYPE "oic.wk.notification.message"
94 #define NS_COLLECTION_SYNC_TYPE    "oic.wk.notification.sync"
95 #define NS_COLLECTION_TOPIC_TYPE   "oic.wk.notification.topic"
96
97 #define NS_INTERFACE_READ          "oic.if.r"
98 #define NS_INTERFACE_READWRITE     "oic.if.rw"
99 #define NS_INTERFACE_BASELINE       "oic.if.baseline"
100
101 #define NS_ROOT_URI                "/notification"
102 #define NS_COLLECTION_MESSAGE_URI  "/notification/message"
103 #define NS_COLLECTION_SYNC_URI     "/notification/sync"
104 #define NS_COLLECTION_TOPIC_URI    "/notification/topic"
105
106 #define NS_QUERY_SEPARATOR         "&;"
107 #define NS_KEY_VALUE_DELIMITER     "="
108
109 #define NS_QUERY_CONSUMER_ID       "consumerid"
110 #define NS_QUERY_PROVIDER_ID       "providerid"
111 #define NS_QUERY_INTERFACE         "if"
112
113 #define NS_QUERY_ID_SIZE           10
114
115 #define NS_POLICY_PROVIDER         1
116 #define NS_POLICY_CONSUMER         0
117
118 #define NS_RD_PUBLISH_QUERY        "/oic/rd?rt=oic.wk.rdpub"
119
120 #ifdef WITH_MQ
121 #define NS_ATTRIBUTE_MQ_MESSAGE "message"
122 #define NS_ATTIRBUTE_MQ_TOPICLIST "topiclist"
123 #endif
124
125 #define NS_VERIFY_NOT_NULL_V(obj) \
126     { \
127         if ((obj) == NULL) \
128         { \
129             NS_LOG_V(ERROR, "%s : %s is null", __func__, #obj); \
130             return; \
131         } \
132     }
133
134 #define NS_VERIFY_NOT_NULL(obj, retVal) \
135     { \
136         if ((obj) == NULL) \
137         { \
138             NS_LOG_V(ERROR, "%s : %s is null", __func__, #obj); \
139             return (retVal); \
140         } \
141     }
142
143 #define NS_VERIFY_NOT_NULL_WITH_POST_CLEANING_V(obj, func) \
144     { \
145         if ((obj) == NULL) \
146         { \
147             NS_LOG_V(ERROR, "%s : %s is null", __func__, #obj); \
148             NS_LOG(ERROR, "execute deletion"); \
149             func; \
150             return; \
151         } \
152     }
153
154 #define NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(obj, retVal, func) \
155     { \
156         if ((obj) == NULL) \
157         { \
158             NS_LOG_V(ERROR, "%s : %s is null", __func__, #obj); \
159             NS_LOG(ERROR, "execute deletion"); \
160             func; \
161             return (retVal); \
162         } \
163     }
164
165 #define NS_VERIFY_STACK_SUCCESS_V(obj) \
166     { \
167         bool _ret = (obj); \
168         if ( _ret != true) \
169         { \
170             NS_LOG_V(ERROR, "%s : %s is not OC_STACK_OK : %d", __func__, #obj, _ret); \
171             return; \
172         } \
173     }
174
175 #define NS_VERIFY_STACK_SUCCESS(obj, retVal) \
176     { \
177         bool _ret = (obj); \
178         if ( _ret != true) \
179         { \
180             NS_LOG_V(ERROR, "%s : %s is not OC_STACK_OK : %d", __func__, #obj, _ret); \
181             return (retVal); \
182         } \
183     }
184
185 #define NS_VERIFY_STACK_SUCCESS_WITH_POST_CLEANING(obj, retVal, func) \
186     { \
187         bool _ret = (obj); \
188         if ( _ret != true) \
189         { \
190             NS_LOG_V(ERROR, "%s : %s is not OC_STACK_OK : %d", __func__, #obj, _ret); \
191             func; \
192             return (retVal); \
193         } \
194     }
195
196 #define NSOICFree(obj) \
197     { \
198         if ((obj)) \
199         { \
200             OICFree((obj)); \
201             (obj) = NULL; \
202             NS_LOG_V(DEBUG, "%s : %s Removed", __func__, #obj); \
203         } \
204     }
205
206 #define VERSION        "1.2.0"
207
208 #define NS_ATTRIBUTE_VERSION "version"
209 #define NS_ATTRIBUTE_POLICY "subcontrollability"
210 #define NS_ATTRIBUTE_MESSAGE "messageuri"
211 #define NS_ATTRIBUTE_SYNC "syncuri"
212 #define NS_ATTRIBUTE_TOPIC "topicuri"
213 #define NS_ATTRIBUTE_MESSAGE_ID "messageid"
214 #define NS_ATTRIBUTE_PROVIDER_ID "providerid"
215 #define NS_ATTRIBUTE_CONSUMER_ID "consumerid"
216 #define NS_ATTRIBUTE_TOPIC_LIST "topiclist"
217 #define NS_ATTRIBUTE_TOPIC_NAME "topicname"
218 #define NS_ATTRIBUTE_TOPIC_SELECTION "topicstate"
219 #define NS_ATTRIBUTE_TITLE "title"
220 #define NS_ATTRIBUTE_TEXT "contenttext"
221 #define NS_ATTRIBUTE_SOURCE "source"
222 #define NS_ATTRIBUTE_STATE "state"
223 #define NS_ATTRIBUTE_DEVICE "device"
224 #define NS_ATTRIBUTE_TYPE "type"
225 #define NS_ATTRIBUTE_DATETIME "datetime"
226 #define NS_ATTRIBUTE_TTL "ttl"
227 #define NS_ATTRIBUTE_ICON_IMAGE "iconimage"
228
229 typedef enum eConnectionState
230 {
231     DISCONNECTED = 0,
232     CONNECTED = 1,
233
234 } NSConnectionState;
235
236 typedef enum eSchedulerType
237 {
238     CALLBACK_RESPONSE_SCHEDULER = 0,
239     DISCOVERY_SCHEDULER = 1,
240     SUBSCRIPTION_SCHEDULER = 2,
241     NOTIFICATION_SCHEDULER = 3,
242     TOPIC_SCHEDULER = 4,
243
244 } NSSchedulerType;
245
246 typedef enum eTaskType
247 {
248 #ifdef WITH_MQ
249     TASK_MQ_REQ_SUBSCRIBE = 20001,
250 #endif
251
252     TASK_REGISTER_RESOURCE = 1000,
253     TASK_PUBLISH_RESOURCE = 1001,
254
255     TASK_START_PRESENCE = 2000,
256     TASK_STOP_PRESENCE = 2001,
257
258     TASK_RECV_SUBSCRIPTION = 3000,
259     TASK_RECV_UNSUBSCRIPTION = 3001,
260     TASK_SEND_POLICY = 3002,
261     TASK_SEND_ALLOW = 3003,
262     TASK_SEND_DENY = 3004,
263     TASK_SYNC_SUBSCRIPTION = 3005,
264
265     TASK_SEND_NOTIFICATION = 4000,
266     TASK_SEND_PENDING_NOTI = 4001,
267
268     TASK_RECV_SYNCINFO = 5000,
269     TASK_RECV_READ = 5001,
270     TASK_RECV_DISMISS = 5003,
271     TASK_SEND_SYNCINFO = 5099,
272     TASK_MAKE_SYNCINFO = 5100,
273     TASK_SEND_READ = 5101,
274     TASK_SEND_DISMISS = 5102,
275
276     TASK_CONSUMER_REQ_DISCOVER = 8001,
277     TASK_CONSUMER_REQ_SUBSCRIBE = 8002,
278     TASK_CONSUMER_REQ_SUBSCRIBE_CANCEL = 8003,
279     TASK_CONSUMER_SENT_REQ_OBSERVE = 8004,
280     TASK_CONSUMER_RECV_PROVIDER_CHANGED = 8005,
281     TASK_CONSUMER_RECV_MESSAGE = 8101,
282
283     TASK_CONSUMER_PROVIDER_DISCOVERED = 8201,
284     TASK_CONSUMER_PROVIDER_DELETED = 8202,
285     TASK_CONSUMER_RECV_CONFIRM = 8206,
286
287     TASK_CONSUMER_REQ_TOPIC_URI = 8299,
288     TASK_CONSUMER_REQ_TOPIC_LIST = 8300,
289     TASK_CONSUMER_RECV_TOPIC_LIST = 8031,
290     TASK_CONSUMER_SELECT_TOPIC_LIST = 8303,
291
292     TASK_EVENT_CONNECTED = 9000,
293     TASK_EVENT_CONNECTED_TCP = 9001,
294     TASK_EVENT_DISCONNECTED = 9002,
295
296     TASK_CB_SUBSCRIPTION = 10000,
297     TASK_CB_SYNC = 10001,
298
299     TASK_SEND_TOPICS = 11000,
300     TASK_REGISTER_TOPIC = 11001,
301     TASK_UNREGISTER_TOPIC = 11002,
302     TASK_SUBSCRIBE_TOPIC = 11003,
303     TASK_UNSUBSCRIBE_TOPIC = 11004,
304     TASK_POST_TOPIC = 11005,
305     TASK_GET_TOPICS = 11006,
306     TAST_GET_CONSUMER_TOPICS = 11007
307
308 } NSTaskType;
309
310 typedef enum eCache
311 {
312     NS_CONSUMER_BLACKLIST = 0,
313     NS_CONSUMER_WHITELIST = 1,
314
315 } NSCache;
316
317 typedef enum eCacheType
318 {
319     NS_PROVIDER_CACHE_SUBSCRIBER = 1000,
320     NS_PROVIDER_CACHE_MESSAGE = 1001,
321     NS_PROVIDER_CACHE_CONSUMER_TOPIC_NAME = 1002,
322     NS_PROVIDER_CACHE_CONSUMER_TOPIC_CID = 1003,
323     NS_PROVIDER_CACHE_REGISTER_TOPIC = 1004,
324     NS_PROVIDER_CACHE_SUBSCRIBER_OBSERVE_ID = 1005,
325
326     NS_CONSUMER_CACHE_PROVIDER = 2000,
327     NS_CONSUMER_CACHE_MESSAGE = 2001,
328
329 } NSCacheType;
330
331 typedef enum eResourceType
332 {
333     NS_RESOURCE_MESSAGE = 1000,
334     NS_RESOURCE_SYNC = 1001,
335     NS_RESOURCE_TOPIC = 1002,
336
337 } NSResourceType;
338
339 typedef enum eInterfaceType
340 {
341     NS_INTERFACE_TYPE_READ = 1,
342     NS_INTERFACE_TYPE_READWRITE = 2,
343
344 } NSInterfaceType;
345
346 #endif /* _NS_CONSTANTS_H_ */