added cacheadapter interface and memorycache of notification.
[platform/upstream/iotivity.git] / service / notification / examples / linux / notificationprovider.c
1 #include <stdio.h>\r
2 #include <stdbool.h>\r
3 #include <stdlib.h>\r
4 #include "NSCommon.h"\r
5 #include "NSProviderInterface.h"\r
6 #include "logger.h"\r
7 #include "octypes.h"\r
8 #include "pthread.h"\r
9 \r
10 \r
11 #define TAG "notiProviderExample"\r
12 \r
13 extern char *strdup(const char *s);\r
14 \r
15 bool isExit = false;\r
16 \r
17 pthread_t processThread;\r
18 \r
19 int id;\r
20 \r
21 void OCProcessThread(void * ptr)\r
22 {\r
23     (void) ptr;\r
24     while (!isExit)\r
25     {\r
26         if (OCProcess() != OC_STACK_OK)\r
27         {\r
28             OIC_LOG(ERROR, TAG, "OCStack process error");\r
29             return;\r
30         }\r
31     }\r
32 }\r
33 \r
34 void subscribeRequestCallback(NSConsumer *consumer)\r
35 {\r
36     OIC_LOG(INFO, TAG, "consumer requested to subscribe");\r
37     char *cid = consumer->mId;\r
38 \r
39     printf("NS_ Consumer ID: %s\n", cid);\r
40 \r
41     NSAccept(consumer, true);\r
42 }\r
43 \r
44 void syncCallback(NSSync *sync)\r
45 {\r
46     OIC_LOG(INFO, TAG, "sync requested");\r
47 \r
48     printf("NS_ Sync State: %d\n", sync->mState);\r
49 }\r
50 \r
51 int main()\r
52 {\r
53     int num;\r
54 \r
55     OIC_LOG(INFO, TAG, "NSStartProvider()");\r
56 \r
57     if (OCInit(NULL, 0, OC_CLIENT_SERVER) != OC_STACK_OK)\r
58     {\r
59         OIC_LOG(INFO, TAG, "OCStack init error");\r
60         return 0;\r
61     }\r
62 \r
63     pthread_create(&processThread, NULL, OCProcessThread, NULL);\r
64 \r
65     NSMessage * message = (NSMessage*) OICMalloc(sizeof(NSMessage));\r
66     if (!message)\r
67     {\r
68         OIC_LOG(ERROR, TAG, PCF("Fail to allocate memory"));\r
69         return NS_ERROR;\r
70     }\r
71 \r
72     while (true)\r
73     {\r
74         char dummy;\r
75 \r
76         printf("1. NSStartProvider(Accepter: Provider) \n");\r
77         printf("2. NSStartProvider(Accepter: Consumer) \n");\r
78         printf("3. NSSendNotification() \n");\r
79         printf("4. NSRead \n");\r
80         //printf("5. NSAccept \n");\r
81         printf("6. NSGetConsumerList \n");\r
82         //printf("7. startPresence \n");\r
83         //printf("8. stopPresence \n");\r
84         printf("0. Exit() \n");\r
85 \r
86         printf("input : ");\r
87 \r
88         scanf("%d", &num);\r
89         scanf("%c", &dummy);\r
90         fflush(stdin);\r
91 \r
92         switch (num)\r
93         {\r
94             case 1:\r
95                 OIC_LOG(INFO, TAG, "NSStartProvider(Accepter: Provider)");\r
96                 NSStartProvider(NS_ACCEPTER_PROVIDER, subscribeRequestCallback, syncCallback);\r
97                 break;\r
98             case 2:\r
99                 OIC_LOG(INFO, TAG, "NSStartProvider(Accepter: Consumer)");\r
100                 NSStartProvider(NS_ACCEPTER_CONSUMER, subscribeRequestCallback, syncCallback);\r
101                 break;\r
102             case 3:\r
103                 OIC_LOG(INFO, TAG, "NSSendNotification()");\r
104 \r
105                 char title[100];\r
106                 char body[100];\r
107                 char charID[100];\r
108 \r
109                 printf("id : %d\n", ++id);\r
110 \r
111                 printf("title : ");\r
112 \r
113                 gets(title);\r
114 \r
115                 printf("body : ");\r
116                 gets(body);\r
117 \r
118                 printf("app - mId : %s \n", charID);\r
119                 printf("app - mTitle : %s \n", title);\r
120                 printf("app - mContentText : %s \n", body);\r
121 \r
122 \r
123                 NSMessage * msg = (NSMessage *)malloc(sizeof(NSMessage));\r
124 \r
125                 sprintf(charID, "%d", id);\r
126 \r
127                 msg->mId = strdup(charID);\r
128                 msg->mTitle = strdup(title);\r
129                 msg->mContentText = strdup(body);\r
130 \r
131                 NSSendNotification(msg);\r
132 \r
133                 break;\r
134 \r
135             case 4:\r
136                 OIC_LOG(INFO, TAG, "NSRead");\r
137                 NSSync * sync = (NSSync*) malloc(sizeof(NSSync));\r
138 \r
139                 sync->mMessageId = strdup("dev_001");\r
140                 sync->mState = 1;\r
141 \r
142                 NSSendSync(sync);\r
143 \r
144                 break;\r
145 /*\r
146             case 5:\r
147                 OIC_LOG(INFO, TAG, "NSAccept");\r
148 \r
149                 NSConsumer * consumer = (NSConsumer *)malloc(sizeof(NSConsumer));\r
150                 consumer->mId = strdup("dev_001");\r
151                 consumer->mUserData = NULL;\r
152                 bool accepted = true;\r
153 \r
154                 NSAccept(consumer, accepted);\r
155 \r
156                 break;*/\r
157 \r
158             case 6:\r
159                 OIC_LOG(INFO, TAG, "NSGetConsumerList");\r
160 \r
161                 /*\r
162                 NSConsumer *list = NULL;\r
163                 int numberOfList;\r
164 \r
165                 NSGetConsumerList(list, numberOfList);\r
166 \r
167                 if(list != NULL)\r
168                 {\r
169                     OIC_LOG(INFO, TAG, "Consumer list");\r
170                 }\r
171                 else\r
172                 {\r
173                     OIC_LOG(INFO, TAG, "No Consumer list");\r
174                 }\r
175                     */\r
176                 break;\r
177             case 7:\r
178                 OIC_LOG(INFO, TAG, "NSStartPresence - not working");\r
179                 //NSTestStartPresence();\r
180                 break;\r
181             case 8:\r
182                 OIC_LOG(INFO, TAG, "NSStopPresence- not working");\r
183                 //NSTestStopPresence();\r
184                 break;\r
185             default:\r
186                 OIC_LOG(INFO, TAG, "Under Construction");\r
187                 break;\r
188         }\r
189 \r
190         printf("\n");\r
191     }\r
192 \r
193     return 0;\r
194 }\r