db8e50f629da305c761a34bca4a7b43d8df63883
[platform/upstream/iotivity.git] /
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 package org.iotivity.service.ns.provider;
21
22 import org.iotivity.service.ns.common.*;
23 import java.util.Vector;
24
25 /**
26  *
27  * This class provides a set of Java APIs for Notification ProviderService.
28  *
29  */
30 public class ProviderService {
31
32     static {
33         System.loadLibrary("gnustl_shared");
34         System.loadLibrary("oc_logger");
35         System.loadLibrary("connectivity_abstraction");
36         System.loadLibrary("ca-interface");
37         System.loadLibrary("octbstack");
38         System.loadLibrary("oc");
39         System.loadLibrary("ocstack-jni");
40         System.loadLibrary("notification_provider");
41         System.loadLibrary("notification_provider_wrapper");
42         System.loadLibrary("notification_provider_jni");
43     }
44
45     private static ProviderService instance;
46
47     static {
48         instance = new ProviderService();
49     }
50
51     /**
52      * API for getting instance of ProviderService
53      *
54      * @return ProviderService singleton instance created
55      */
56     public static ProviderService getInstance() {
57         return instance;
58     }
59
60     /**
61      * Start ProviderService
62      *
63      * @param subscribedListener
64      *            OnConsumerSubscribedListener Callback
65      * @param messageSynchronized
66      *            OnMessageSynchronizedListener Callback
67      * @param subControllability
68      *            Set the policy for notification servcie which checks whether
69      *            provider is capable of denying the subscription of
70      *            notification message from consumer and getting controllabliity
71      *            to set consumer topic list. If true, provider is able to
72      *            control subscription request and consumer topic list.
73      *            Otherwise(policy is false), consumer can do the same.
74      * @param userInfo
75      *            User defined information such as device friendly name
76      * @param resourceSecurity
77      *            Set on/off for secure resource channel setting
78      *
79      * @return result code 100 = OK , 200 = ERROR , 300 = SUCCESS , 400 = FAIL
80      *
81      * @throws NSException
82      *             if any callback parameter passed is null
83      */
84     public int start(OnConsumerSubscribedListener subscribedListener,
85             OnMessageSynchronizedListener messageSynchronized,
86             boolean subControllability, String userInfo,
87             boolean resourceSecurity) throws NSException {
88         return nativeStart(subscribedListener, messageSynchronized,
89                 subControllability, userInfo, resourceSecurity);
90     }
91
92     /**
93      * Stop ProviderService
94      *
95      * @return result code 100 = OK , 200 = ERROR , 300 = SUCCESS , 400 = FAIL
96      *
97      * @throws NSException failed to stop ProviderService
98      */
99     public int stop() throws NSException {
100         return nativeStop();
101     }
102
103     /**
104      * Send notification message to all subscribers
105      *
106      * @param message
107      *            Notification message including id, title, contentText
108      *
109      * @return result code 100 = OK , 200 = ERROR , 300 = SUCCESS , 400 = FAIL
110      *
111      * @throws NSException failed to send notification message
112      */
113     public int sendMessage(Message message) throws NSException {
114         return nativeSendMessage(message);
115     }
116
117     /**
118      * Send read-check to provider in order to synchronize notification status
119      * with other consumers
120      *
121      * @param messageId
122      *            unique Id of Notification message to synchronize the status
123      * @param syncType
124      *            SyncType of the SyncInfo message
125      * @throws NSException failed to send read-check
126      */
127     public void sendSyncInfo(long messageId, SyncInfo.SyncType syncType)
128             throws NSException {
129         nativeSendSyncInfo(messageId, syncType.ordinal());
130     }
131
132     /**
133      * Initialize Message class, Mandatory fields which are messge id and
134      * provider(device) id are filled
135      *
136      * @return Message
137      *
138      * @throws NSException failed to initialized message class
139      */
140     public Message createMessage() throws NSException {
141         return nativeCreateMessage();
142     }
143
144     /**
145      * Request to publish resource to cloud server
146      *
147      * @param servAdd
148      *            servAdd combined with IP address and port number using
149      *            delimiter
150      *
151      * @return result code 100 = OK , 200 = ERROR , 300 = SUCCESS , 400 = FAIL
152      *
153      * @throws NSException failed to publish resource
154      */
155     public int enableRemoteService(String servAdd) throws NSException {
156         return nativeEnableRemoteService(servAdd);
157     }
158
159     /**
160      * Request to cancel remote service using cloud server
161      *
162      * @param servAdd
163      *            servAdd combined with IP address and port number using
164      *            delimiter
165      *
166      * @return result code 100 = OK , 200 = ERROR , 300 = SUCCESS , 400 = FAIL
167      *
168      * @throws NSException failed to publish resource
169      */
170     public int disableRemoteService(String servAdd) throws NSException {
171         return nativeDisableRemoteService(servAdd);
172     }
173
174     /**
175      * Request to subscribe to MQ server
176      *
177      * @param servAdd
178      *            servAdd combined with IP address and port number and MQ broker
179      *            uri using delimiter
180      * @param topicName
181      *            the interest Topic name for subscription
182      *
183      * @return result code 100 = OK , 200 = ERROR , 300 = SUCCESS , 400 = FAIL
184      *
185      * @throws NSException failed to subscribe to MQ server
186      */
187     public int subscribeMQService(String servAdd, String topicName)
188             throws NSException {
189         return nativeSubscribeMQService(servAdd, topicName);
190     }
191
192     /**
193      * Add topic to topic list
194      *
195      * @param topicName
196      *            Topic name to add
197      *
198      * @return result code 100 = OK , 200 = ERROR , 300 = SUCCESS , 400 = FAIL
199      *
200      * @throws NSException failed to add topic
201      */
202     public int registerTopic(String topicName) throws NSException {
203         return nativeRegisterTopic(topicName);
204     }
205
206     /**
207      * Delete topic from topic list
208      *
209      * @param topicName
210      *            Topic name to add
211      *
212      * @return result code 100 = OK , 200 = ERROR , 300 = SUCCESS , 400 = FAIL
213      *
214      * @throws NSException failed to delete topic
215      */
216     public int unregisterTopic(String topicName) throws NSException {
217         return nativeUnregisterTopic(topicName);
218     }
219
220     /**
221      * Request topics list already registered by provider user
222      *
223      * 
224      * @return result code 100 = OK , 200 = ERROR , 300 = SUCCESS , 400 = FAIL
225      *
226      * @throws NSException failed to get topics list
227      */
228     public TopicsList getRegisteredTopicList() throws NSException {
229         return nativeGetRegisteredTopicList();
230     }
231
232     /**
233      * Interface to implement callback function to receive subscription request
234      * of consumer
235      */
236     public interface OnConsumerSubscribedListener {
237
238         /**
239          * Callback function to receive subscription request of consumer
240          *
241          * @param consumer
242          *            Consumer who subscribes the notification message resource
243          */
244         public void onConsumerSubscribed(Consumer consumer);
245     }
246
247     /**
248      * Interface to implement callback function to receive the status of the
249      * message synchronization
250      */
251     public interface OnMessageSynchronizedListener {
252
253         /**
254          * Callback function to receive the status of the message
255          * synchronization
256          *
257          * @param syncInfo
258          *            Synchronization information of the notification message
259          */
260         public void onMessageSynchronized(SyncInfo syncInfo);
261     }
262
263     public native int nativeStart(
264             OnConsumerSubscribedListener subscribedListener,
265             OnMessageSynchronizedListener messageSynchronized,
266             boolean subControllability, String userInfo,
267             boolean resourceSecurity) throws NSException;
268
269     public native int nativeStop() throws NSException;
270
271     public native int nativeSendMessage(Message message) throws NSException;
272
273     public native void nativeSendSyncInfo(long messageId, int type)
274             throws NSException;
275
276     public native Message nativeCreateMessage() throws NSException;
277
278     public native int nativeEnableRemoteService(String servAdd)
279             throws NSException;
280
281     public native int nativeDisableRemoteService(String servAdd)
282             throws NSException;
283
284     public native int nativeSubscribeMQService(String servAdd, String topicName)
285             throws NSException;
286
287     public native int nativeRegisterTopic(String topicName) throws NSException;
288
289     public native int nativeUnregisterTopic(String topicName)
290             throws NSException;
291
292     public native TopicsList nativeGetRegisteredTopicList() throws NSException;
293 }