service is terminated when repeated starts and stops.
[platform/upstream/iotivity.git] / service / notification / src / provider / NSProviderResource.c
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 #include "NSProviderResource.h"
22
23 NSNotificationResource NotificationResource;
24 NSMessageResource NotificationMessageResource;
25 NSSyncResource NotificationSyncResource;
26
27 NSResult NSCreateResource(char *uri)
28 {
29     NS_LOG(DEBUG, "NSCreateResource - IN");
30     if (!uri)
31     {
32         NS_LOG(NS_ERROR, "Resource URI cannot be NULL");
33         return NS_ERROR;
34     }
35
36     if (strcmp(uri, NS_ROOT_URI) == 0)
37     {
38         NotificationResource.accepter = 0;
39         NotificationResource.message_uri = NS_COLLECTION_MESSAGE_URI;
40         NotificationResource.sync_uri = NS_COLLECTION_SYNC_URI;
41         NotificationResource.handle = NULL;
42
43         if (OCCreateResource(&NotificationResource.handle, NS_ROOT_TYPE, NS_DEFAULT_INTERFACE,
44                 NS_ROOT_URI, NSEntityHandlerNotificationCb, NULL, OC_DISCOVERABLE) != OC_STACK_OK)
45         {
46             NS_LOG(NS_ERROR, "Fail to Create Notification Resource");
47             return NS_ERROR;
48         }
49     }
50     else if (strcmp(uri, NS_COLLECTION_MESSAGE_URI) == 0)
51     {
52
53         NotificationMessageResource.messageId = 0;
54
55         (NotificationMessageResource.providerId)[0] = '\0';
56         NotificationMessageResource.type = 0;
57         NotificationMessageResource.dateTime = NULL;
58         NotificationMessageResource.ttl = 0;
59         NotificationMessageResource.title = NULL;
60         NotificationMessageResource.contentText = NULL;
61         NotificationMessageResource.sourceName = NULL;
62         NotificationMessageResource.mediaContents = NULL;
63
64         if (OCCreateResource(&NotificationMessageResource.handle, NS_COLLECTION_MESSAGE_TYPE,
65                 NS_DEFAULT_INTERFACE, NS_COLLECTION_MESSAGE_URI, NSEntityHandlerMessageCb, NULL,
66                 OC_OBSERVABLE) != OC_STACK_OK)
67         {
68             NS_LOG(NS_ERROR, "Fail to Create Notification Message Resource");
69             return NS_ERROR;
70         }
71     }
72     else if (strcmp(uri, NS_COLLECTION_SYNC_URI) == 0)
73     {
74         NotificationSyncResource.id = NULL;
75         NotificationSyncResource.state = NULL;
76         NotificationSyncResource.handle = NULL;
77
78         if (OCCreateResource(&(NotificationSyncResource.handle), NS_COLLECTION_SYNC_TYPE,
79                 NS_DEFAULT_INTERFACE, NS_COLLECTION_SYNC_URI, NSEntityHandlerSyncCb, NULL,
80                 OC_OBSERVABLE) != OC_STACK_OK)
81         {
82             NS_LOG(NS_ERROR, "Fail to Create Notification Sync Resource");
83             return NS_ERROR;
84         }
85     }
86     else
87     {
88         NS_LOG(ERROR, "Fail to create resource with invalid URI");
89         return NS_ERROR;
90     }
91
92     NS_LOG(DEBUG, "NSCreateResource - OUT");
93     return NS_OK;
94 }
95
96 NSResult NSRegisterResource()
97 {
98     NS_LOG(DEBUG, "NSRegisterResource - IN");
99
100     if (NSCreateResource(NS_COLLECTION_SYNC_URI) != NS_OK)
101     {
102         NS_LOG(ERROR, "Fail to register Sync Resource");
103         return NS_ERROR;
104     }
105
106     if (NSCreateResource(NS_COLLECTION_MESSAGE_URI) != NS_OK)
107     {
108         NS_LOG(ERROR, "Fail to register Message Resource");
109         return NS_ERROR;
110     }
111
112     if (NSCreateResource(NS_ROOT_URI) != NS_OK)
113     {
114         NS_LOG(ERROR, "Fail to register Notification Resource");
115         return NS_ERROR;
116     }
117
118     NS_LOG(DEBUG, "NSRegisterResource - OUT");
119     return NS_OK;
120 }
121
122 NSResult NSUnRegisterResource()
123 {
124     NS_LOG(DEBUG, "NSUnRegisterResource - IN");
125
126     if (OCDeleteResource(NotificationResource.handle) != OC_STACK_OK)
127     {
128         NS_LOG(ERROR, "Fail to Delete Notification Resource");
129         return NS_ERROR;
130     }
131
132     if (OCDeleteResource(NotificationMessageResource.handle) != OC_STACK_OK)
133     {
134         NS_LOG(ERROR, "Fail to Delete Notification Message Resource");
135         return NS_ERROR;
136     }
137
138     if (OCDeleteResource(NotificationSyncResource.handle) != OC_STACK_OK)
139     {
140         NS_LOG(ERROR, "Fail to Delete Notification Sync Resource");
141         return NS_ERROR;
142     }
143
144     NotificationResource.handle = NULL;
145     NotificationMessageResource.handle = NULL;
146     NotificationSyncResource.handle = NULL;
147
148     NS_LOG(DEBUG, "NSUnRegisterResource - OUT");
149     return NS_OK;
150 }
151
152 NSResult NSPutNotificationResource(int accepter, OCResourceHandle * handle)
153 {
154     NS_LOG(DEBUG, "NSPutNotificationResource - IN");
155
156     NotificationResource.accepter = accepter;
157     NotificationResource.message_uri = NS_COLLECTION_MESSAGE_URI;
158     NotificationResource.sync_uri = NS_COLLECTION_SYNC_URI;
159
160     *handle = NotificationResource.handle;
161
162     NS_LOG(DEBUG, "NSPutNotificationResource - OUT");
163     return NS_OK;
164 }
165
166 NSResult NSPutMessageResource(NSMessage *msg, OCResourceHandle * handle)
167 {
168     NS_LOG(DEBUG, "NSPutMessageResource - IN");
169
170     if(msg != NULL)
171     {
172         NS_LOG(DEBUG, "NSMessage is valid");
173
174         NotificationMessageResource.messageId = msg->messageId;
175         OICStrcpy(NotificationMessageResource.providerId, UUID_STRING_SIZE, msg->providerId);
176         NotificationMessageResource.type = msg->type;
177         NotificationMessageResource.dateTime = msg->dateTime;
178         NotificationMessageResource.ttl = msg->ttl;
179         NotificationMessageResource.title = msg->title;
180         NotificationMessageResource.contentText = msg->contentText;
181         NotificationMessageResource.sourceName = msg->sourceName;
182         NotificationMessageResource.mediaContents = msg->mediaContents;
183     }
184     else
185     {
186         NS_LOG(ERROR, "NSMessage is NULL");
187     }
188
189     *handle = NotificationMessageResource.handle;
190     NS_LOG(DEBUG, "NSPutMessageResource - OUT");
191
192     return NS_OK;
193 }
194
195 NSResult NSPutSyncResource(NSSyncInfo *sync, OCResourceHandle * handle)
196 {
197     NS_LOG(DEBUG, "NSPutSyncResource - IN");
198
199     (void) sync;
200
201     *handle = NotificationSyncResource.handle;
202
203     NS_LOG(DEBUG, "NSPutSyncResource - OUT");
204     return NS_OK;
205 }