notification_env.InstallTarget(consumersdk, 'libnotification_consumer')
notification_env.UserInstallTargetLib(consumersdk, 'libnotification_consumer')
-notification_env.UserInstallTargetHeader('include/NSProviderInterface.h',\
- 'service/notification', 'NSProviderInterface.h')
+notification_env.UserInstallTargetHeader('include/NSProvider.h',\
+ 'service/notification', 'NSProvider.h')
notification_env.UserInstallTargetHeader('include/NSConsumerInterface.h',\
'service/notification', 'NSConsumerInterface.h')
# Go to build Unit test
# if target_os == 'linux':
-# SConscript('unittest/SConscript')
+#SConscript('unittest/SConscript')
# Go to build sample apps
SConscript('examples/SConscript')
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
\r
#include <jni.h>\r
-#include "NSProviderInterface.h"\r
+\r
+#include "NSProvider.h"\r
#include "NSCommon.h"\r
\r
#ifndef NOTIFICATION_JNI_H\r
-/******************************************************************\r
- *\r
- * Copyright 2015 Samsung Electronics All Rights Reserved.\r
- *\r
- *\r
- *\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- *\r
- ******************************************************************/\r
+//******************************************************************\r
+//\r
+// Copyright 2016 Samsung Electronics All Rights Reserved.\r
+//\r
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//\r
+// Licensed under the Apache License, Version 2.0 (the "License");\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+// http://www.apache.org/licenses/LICENSE-2.0\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an "AS IS" BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
\r
#include <stdio.h>\r
#include <stdbool.h>\r
#include <stdlib.h>\r
#include <unistd.h>\r
+\r
+#include "NSProvider.h"\r
#include "NSCommon.h"\r
-#include "NSProviderInterface.h"\r
#include "logger.h"\r
#include "octypes.h"\r
#include "pthread.h"\r
\r
#define TAG "NSProviderExample"\r
\r
+// Input the following values to publish resource to cloud\r
+char REMOTE_SERVER_ADDRESS[50];\r
+char REMOTE_SERVER_SESSION[50];\r
+\r
extern char *strdup(const char *s);\r
\r
bool isExit = false;\r
{\r
if (OCProcess() != OC_STACK_OK)\r
{\r
- OIC_LOG(ERROR, TAG, "OCStack process error");\r
+ printf("OCStack process error");\r
return NULL;\r
}\r
}\r
\r
void subscribeRequestCallback(NSConsumer *consumer)\r
{\r
- OIC_LOG(INFO, TAG, "consumer requested to subscribe");\r
+ printf("consumer requested to subscribe");\r
\r
printf("NS_APP Consumer Device ID: %s\n", consumer->consumerId);\r
\r
\r
void syncCallback(NSSyncInfo *sync)\r
{\r
- OIC_LOG(INFO, TAG, "sync requested");\r
+ printf("sync requested");\r
\r
printf("NS_APP Sync State: %d\n", sync->state);\r
}\r
int CtxValue = 0x99;\r
if (ctx != (void *)CtxValue)\r
{\r
- OIC_LOG(INFO, TAG, "Invalid Cloud Login/out callback received");\r
+ printf("Invalid Cloud Login/out callback received");\r
}\r
\r
- OIC_LOG(INFO, TAG, "Login/out response received");\r
+ printf("Login/out response received");\r
\r
if (clientResponse->payload != NULL &&\r
clientResponse->payload->type == PAYLOAD_TYPE_REPRESENTATION)\r
{\r
- OIC_LOG(INFO, TAG, "PAYLOAD_TYPE_REPRESENTATION received");\r
+ printf("PAYLOAD_TYPE_REPRESENTATION received");\r
\r
OCRepPayloadValue *val = ((OCRepPayload *)clientResponse->payload)->values;\r
\r
- OIC_LOG(INFO, TAG, "Get payload values");\r
+ printf("Get payload values");\r
while (val)\r
{\r
- OIC_LOG_V(INFO, TAG, "key: %s / Value: %s", val->name, val->str);\r
+ printf("key: %s / Value: %s", val->name, val->str);\r
val = val->next;\r
}\r
\r
- char *serverAddress = "coap+tcp://52.69.149.85:5683";\r
- NSProviderEnableRemoteService(serverAddress);\r
+ NSProviderEnableRemoteService(REMOTE_SERVER_ADDRESS);\r
}\r
\r
return OC_STACK_KEEP_TRANSACTION;\r
int num;\r
pthread_t processThread;\r
\r
- // cloud host address\r
- const char *host = "coap+tcp://52.69.149.85:5683";\r
- // cloud auth session\r
- const char *auth_session = "gZDRuDyYapZXIcrs";\r
-\r
-\r
- OIC_LOG(INFO, TAG, "NSStartProvider()");\r
+ printf("NSStartProvider()");\r
\r
// open oic_db\r
static OCPersistentStorage ps = {server_fopen, fread, fwrite, fclose, unlink};\r
\r
if (OCInit(NULL, 0, OC_CLIENT_SERVER) != OC_STACK_OK)\r
{\r
- OIC_LOG(INFO, TAG, "OCStack init error");\r
+ printf("OCStack init error");\r
return 0;\r
}\r
\r
printf("3. NSSendNotification() \n");\r
printf("4. NSRead \n");\r
printf("5. NSStopProvider() \n");\r
- printf("6. NSGetConsumerList \n");\r
+\r
printf("11. NSCloudLogin \n");\r
printf("12. NSCloudLogout \n");\r
printf("0. Exit() \n");\r
switch (num)\r
{\r
case 1:\r
- OIC_LOG(INFO, TAG, "NSStartProvider(Accepter: Provider)");\r
+ printf("NSStartProvider(Accepter: Provider)");\r
NSStartProvider(NS_ACCESS_ALLOW, subscribeRequestCallback, syncCallback);\r
break;\r
case 2:\r
- OIC_LOG(INFO, TAG, "NSStartProvider(Accepter: Consumer)");\r
+ printf("NSStartProvider(Accepter: Consumer)");\r
NSStartProvider(NS_ACCESS_DENY, subscribeRequestCallback, syncCallback);\r
break;\r
case 3:\r
- OIC_LOG(INFO, TAG, "NSSendNotification()");\r
+ printf("NSSendNotification()");\r
\r
char title[100];\r
char body[100];\r
break;\r
\r
case 4:\r
- OIC_LOG(INFO, TAG, "NSRead");\r
+ printf("NSRead");\r
NSSyncInfo * sync = (NSSyncInfo*) OICMalloc(sizeof(NSSyncInfo));\r
\r
sync->messageId = OICStrdup("dev_001");\r
case 5:\r
NSStopProvider();\r
break;\r
- case 6:\r
- OIC_LOG(INFO, TAG, "NSGetConsumerList");\r
- break;\r
+\r
case 11:\r
- OIC_LOG(INFO, TAG, "NSCloudLogin");\r
+ printf("NSCloudLogin");\r
+\r
+ printf("Cloud Address: ");\r
+ gets(REMOTE_SERVER_ADDRESS);\r
+\r
+ printf("Session Code: ");\r
+ gets(REMOTE_SERVER_SESSION);\r
+\r
\r
- NSCloudLogin(host, auth_session, CloudLoginoutCallback);\r
- OIC_LOG(INFO, TAG, "OCCloudLogin requested");\r
+ NSCloudLogin(REMOTE_SERVER_ADDRESS, REMOTE_SERVER_SESSION, CloudLoginoutCallback);\r
+ printf("OCCloudLogin requested");\r
break;\r
case 12:\r
- OIC_LOG(INFO, TAG, "NSCloudLogout");\r
+ printf("NSCloudLogout");\r
\r
- NSCloudLogout(host, auth_session, CloudLoginoutCallback);\r
- OIC_LOG(INFO, TAG, "OCCloudLogout requested");\r
+ NSCloudLogout(REMOTE_SERVER_ADDRESS, REMOTE_SERVER_SESSION, CloudLoginoutCallback);\r
+ printf("OCCloudLogout requested");\r
break;\r
case 0:\r
NSStopProvider();\r
isExit = true;\r
break;\r
default:\r
- OIC_LOG(INFO, TAG, "Under Construction");\r
+ printf("Under Construction");\r
break;\r
}\r
\r
#ifndef _NS_COMMON_H_
#define _NS_COMMON_H_
-#include <ocstack.h>
-
#define NS_ATTRIBUTE_POLICY "ACCEPTER"
#define NS_ATTRIBUTE_MESSAGE "MESSAGE_URI"
#define NS_ATTRIBUTE_SYNC "SYNC_URI"
typedef enum eSchedulerType
{
- INTERFACE_SCHEDULER = 0,
+ CALLBACK_RESPONSE_SCHEDULER = 0,
DISCOVERY_SCHEDULER = 1,
SUBSCRIPTION_SCHEDULER = 2,
NOTIFICATION_SCHEDULER = 3,
\r
typedef struct\r
{\r
- char id[37]; // ip\r
- int syncObId;\r
- int messageObId;\r
- bool isWhite;\r
+ char id[37];\r
+ int syncObId; // sync resource observer ID for local consumer\r
+ int messageObId; // message resource observer ID for local consumer\r
+ int remote_syncObId; //sync observer ID subscribed through remote server\r
+ int remote_messageObId; //message observer ID subscribed through remote server\r
+ bool isWhite; // access state -> True: allowed / False: blocked\r
} NSCacheSubData;\r
\r
typedef struct\r
{\r
- char * id; // ip ? ? ?\r
+ char * id;\r
int messageType; // noti = 1, read = 2, dismiss = 3\r
NSMessage * nsMessage;\r
} NSCacheMsgData;\r
//\r
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
\r
-#include "NSProviderInterface.h"\r
+#include "NSProvider.h"\r
#include "NSProviderScheduler.h"\r
#include "NSProviderListener.h"\r
#include "NSProviderSubscription.h"\r
#include "NSProviderNotification.h"\r
+#include "NSProviderCallbackResponse.h"\r
#include "NSStorageAdapter.h"\r
#include "NSProviderMemoryCache.h"\r
#include "oic_malloc.h"\r
#include "oic_time.h"\r
\r
bool initProvider = false;\r
-static NSSubscribeRequestCallback g_subscribeRequestCb = NULL;\r
-static NSProviderSyncInfoCallback g_syncCb = NULL;\r
\r
pthread_mutex_t nsInitMutex;\r
\r
nsInitMutex = initMutex;\r
}\r
\r
-void NSRegisterSubscribeRequestCb(NSSubscribeRequestCallback subscribeRequestCb)\r
-{\r
- NS_LOG(DEBUG, "NSRegisterSubscribeRequestCb - IN");\r
- g_subscribeRequestCb = subscribeRequestCb;\r
- NS_LOG(DEBUG, "NSRegisterSubscribeRequestCb - OUT");\r
-}\r
-\r
-void NSRegisterSyncCb(NSProviderSyncInfoCallback syncCb)\r
-{\r
- NS_LOG(DEBUG, "NSRegisterSyncCb - IN");\r
- g_syncCb = syncCb;\r
- NS_LOG(DEBUG, "NSRegisterSyncCb - OUT");\r
-}\r
-\r
-void NSSubscribeRequestCb(NSConsumer *consumer)\r
-{\r
- NS_LOG(DEBUG, "NSSubscribeRequestCb - IN");\r
- g_subscribeRequestCb(consumer);\r
- NS_LOG(DEBUG, "NSSubscribeRequestCb - OUT");\r
-}\r
-\r
-void NSSyncCb(NSSyncInfo *sync)\r
-{\r
- NS_LOG(DEBUG, "NSSyncCb - IN");\r
- g_syncCb(sync);\r
- NS_LOG(DEBUG, "NSSyncCb - OUT");\r
-}\r
-\r
NSResult NSStartProvider(NSAccessPolicy policy, NSSubscribeRequestCallback subscribeRequestCb,\r
NSProviderSyncInfoCallback syncCb)\r
{\r
NSSetSubscriptionAccessPolicy(policy);\r
NSRegisterSubscribeRequestCb(subscribeRequestCb);\r
NSRegisterSyncCb(syncCb);\r
- CARegisterNetworkMonitorHandler(NSProviderAdapterStateListener,\r
- NSProviderConnectionStateListener);\r
+ CARegisterNetworkMonitorHandler((CAAdapterStateChangedCB)NSProviderAdapterStateListener,\r
+ (CAConnectionStateChangedCB)NSProviderConnectionStateListener);\r
\r
NSSetList();\r
NSInitScheduler();\r
NS_LOG(DEBUG, "NSCreateMessage - OUT");\r
return msg;\r
}\r
-\r
-void * NSInterfaceSchedule(void * ptr)\r
-{\r
- if (ptr == NULL)\r
- {\r
- NS_LOG(DEBUG, "Create NSReponseSchedule");\r
- }\r
-\r
- while (NSIsRunning[INTERFACE_SCHEDULER])\r
- {\r
- sem_wait(&NSSemaphore[INTERFACE_SCHEDULER]);\r
- pthread_mutex_lock(&NSMutex[INTERFACE_SCHEDULER]);\r
-\r
- if (NSHeadMsg[INTERFACE_SCHEDULER] != NULL)\r
- {\r
- NSTask *node = NSHeadMsg[INTERFACE_SCHEDULER];\r
- NSHeadMsg[INTERFACE_SCHEDULER] = node->nextTask;\r
-\r
- switch (node->taskType)\r
- {\r
- case TASK_CB_SUBSCRIPTION:\r
- {\r
- NS_LOG(DEBUG, "CASE TASK_CB_SUBSCRIPTION : ");\r
-\r
- OCEntityHandlerRequest * request = (OCEntityHandlerRequest*)node->taskData;\r
- NSConsumer * consumer = (NSConsumer *)OICMalloc(sizeof(NSConsumer));\r
-\r
- char * consumerId = NSGetValueFromQuery(OICStrdup(request->query),\r
- NS_QUERY_CONSUMER_ID);\r
-\r
- if(consumerId)\r
- {\r
- OICStrcpy(consumer->consumerId, UUID_STRING_SIZE, consumerId);\r
- NSSubscribeRequestCb(consumer);\r
- }\r
-\r
- NSFreeConsumer(consumer);\r
- NSFreeOCEntityHandlerRequest(request);\r
-\r
- break;\r
- }\r
- case TASK_CB_SYNC:\r
- {\r
- NS_LOG(DEBUG, "CASE TASK_CB_SYNC : ");\r
- NSSyncInfo * sync = (NSSyncInfo*)node->taskData;\r
- NSSyncCb(NSDuplicateSync(sync));\r
- NSFreeSync(sync);\r
- break;\r
- }\r
- default:\r
- NS_LOG(DEBUG, "No Task Type");\r
- break;\r
- }\r
- OICFree(node);\r
- }\r
-\r
- pthread_mutex_unlock(&NSMutex[INTERFACE_SCHEDULER]);\r
- }\r
-\r
- NS_LOG(DEBUG, "Destroy NSResponseSchedule");\r
- return NULL;\r
-}\r
-\r
--- /dev/null
+//******************************************************************\r
+//\r
+// Copyright 2016 Samsung Electronics All Rights Reserved.\r
+//\r
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//\r
+// Licensed under the Apache License, Version 2.0 (the "License");\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+// http://www.apache.org/licenses/LICENSE-2.0\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an "AS IS" BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+#include "NSProvider.h"\r
+#include "NSProviderScheduler.h"\r
+#include "NSProviderListener.h"\r
+#include "NSProviderSubscription.h"\r
+#include "NSProviderNotification.h"\r
+#include "NSStorageAdapter.h"\r
+#include "NSProviderMemoryCache.h"\r
+#include "NSProviderCallbackResponse.h"\r
+#include "oic_malloc.h"\r
+#include "oic_string.h"\r
+#include "cautilinterface.h"\r
+#include "NSProviderSystem.h"\r
+#include "oic_time.h"\r
+\r
+static NSSubscribeRequestCallback g_subscribeRequestCb = NULL;\r
+static NSProviderSyncInfoCallback g_syncCb = NULL;\r
+\r
+pthread_mutex_t nsInitMutex;\r
+\r
+void NSRegisterSubscribeRequestCb(NSSubscribeRequestCallback subscribeRequestCb)\r
+{\r
+ NS_LOG(DEBUG, "NSRegisterSubscribeRequestCb - IN");\r
+ g_subscribeRequestCb = subscribeRequestCb;\r
+ NS_LOG(DEBUG, "NSRegisterSubscribeRequestCb - OUT");\r
+}\r
+\r
+void NSRegisterSyncCb(NSProviderSyncInfoCallback syncCb)\r
+{\r
+ NS_LOG(DEBUG, "NSRegisterSyncCb - IN");\r
+ g_syncCb = syncCb;\r
+ NS_LOG(DEBUG, "NSRegisterSyncCb - OUT");\r
+}\r
+\r
+void NSSubscribeRequestCb(NSConsumer *consumer)\r
+{\r
+ NS_LOG(DEBUG, "NSSubscribeRequestCb - IN");\r
+ g_subscribeRequestCb(consumer);\r
+ NS_LOG(DEBUG, "NSSubscribeRequestCb - OUT");\r
+}\r
+\r
+void NSSyncCb(NSSyncInfo *sync)\r
+{\r
+ NS_LOG(DEBUG, "NSSyncCb - IN");\r
+ g_syncCb(sync);\r
+ NS_LOG(DEBUG, "NSSyncCb - OUT");\r
+}\r
+\r
+void * NSCallbackResponseSchedule(void * ptr)\r
+{\r
+ if (ptr == NULL)\r
+ {\r
+ NS_LOG(DEBUG, "Create NSReponseSchedule");\r
+ }\r
+\r
+ while (NSIsRunning[CALLBACK_RESPONSE_SCHEDULER])\r
+ {\r
+ sem_wait(&NSSemaphore[CALLBACK_RESPONSE_SCHEDULER]);\r
+ pthread_mutex_lock(&NSMutex[CALLBACK_RESPONSE_SCHEDULER]);\r
+\r
+ if (NSHeadMsg[CALLBACK_RESPONSE_SCHEDULER] != NULL)\r
+ {\r
+ NSTask *node = NSHeadMsg[CALLBACK_RESPONSE_SCHEDULER];\r
+ NSHeadMsg[CALLBACK_RESPONSE_SCHEDULER] = node->nextTask;\r
+\r
+ switch (node->taskType)\r
+ {\r
+ case TASK_CB_SUBSCRIPTION:\r
+ {\r
+ NS_LOG(DEBUG, "CASE TASK_CB_SUBSCRIPTION : ");\r
+\r
+ OCEntityHandlerRequest * request = (OCEntityHandlerRequest*)node->taskData;\r
+ NSConsumer * consumer = (NSConsumer *)OICMalloc(sizeof(NSConsumer));\r
+\r
+ char * consumerId = NSGetValueFromQuery(OICStrdup(request->query),\r
+ NS_QUERY_CONSUMER_ID);\r
+\r
+ if(consumerId)\r
+ {\r
+ OICStrcpy(consumer->consumerId, UUID_STRING_SIZE, consumerId);\r
+ NSSubscribeRequestCb(consumer);\r
+ }\r
+\r
+ NSFreeConsumer(consumer);\r
+ NSFreeOCEntityHandlerRequest(request);\r
+\r
+ break;\r
+ }\r
+ case TASK_CB_SYNC:\r
+ {\r
+ NS_LOG(DEBUG, "CASE TASK_CB_SYNC : ");\r
+ NSSyncInfo * sync = (NSSyncInfo*)node->taskData;\r
+ NSSyncCb(NSDuplicateSync(sync));\r
+ NSFreeSync(sync);\r
+ break;\r
+ }\r
+ default:\r
+ NS_LOG(DEBUG, "No Task Type");\r
+ break;\r
+ }\r
+ OICFree(node);\r
+ }\r
+\r
+ pthread_mutex_unlock(&NSMutex[CALLBACK_RESPONSE_SCHEDULER]);\r
+ }\r
+\r
+ NS_LOG(DEBUG, "Destroy NSResponseSchedule");\r
+ return NULL;\r
+}\r
+\r
--- /dev/null
+//******************************************************************\r
+//\r
+// Copyright 2016 Samsung Electronics All Rights Reserved.\r
+//\r
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+//\r
+// Licensed under the Apache License, Version 2.0 (the "License");\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+// http://www.apache.org/licenses/LICENSE-2.0\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an "AS IS" BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+//\r
+//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
+\r
+#ifndef _NS_PROVIDER_CALLBACK_RESPONSE__H_\r
+#define _NS_PROVIDER_CALLBACK_RESPONSE__H_\r
+\r
+#include <string.h>\r
+#include "logger.h"\r
+#include "NSCommon.h"\r
+#include "NSConstants.h"\r
+#include "oic_malloc.h"\r
+#include "NSStructs.h"\r
+#include "NSUtil.h"\r
+\r
+void NSRegisterSubscribeRequestCb(NSSubscribeRequestCallback subscribeRequestCb);\r
+void NSRegisterSyncCb(NSProviderSyncInfoCallback syncCb);\r
+void NSSubscribeRequestCb(NSConsumer *consumer);\r
+void NSSyncCb(NSSyncInfo *sync);\r
+\r
+#endif /* _NS_PROVIDER_CALLBACK_RESPONSE__H_ */\r
while (it)
{
NSCacheSubData * subData = (NSCacheSubData *) it->data;
- NS_LOG_V(DEBUG, "subData->id = %s", subData->id);
+ NS_LOG_V(DEBUG, "message subData->id = %s", subData->id);
NS_LOG_V(DEBUG, "subData->messageId = %d", subData->messageObId);
- NS_LOG_V(DEBUG, "subData->obID = %d", subData->syncObId);
+ NS_LOG_V(DEBUG, "subData->cloud_messageId = %d", subData->remote_messageObId);
+ NS_LOG_V(DEBUG, "subData->syncId = %d", subData->syncObId);
+ NS_LOG_V(DEBUG, "subData->cloud_syncId = %d", subData->remote_syncObId);
NS_LOG_V(DEBUG, "subData->isWhite = %d", subData->isWhite);
if (subData->isWhite)
{
- obArray[obCount++] = subData->messageObId;
+ if(subData->messageObId != 0)
+ obArray[obCount++] = subData->messageObId;
+
+ if(subData->remote_messageObId != 0)
+ obArray[obCount++] = subData->remote_messageObId;
}
it = it->next;
}
while (it)
{
NSCacheSubData * subData = (NSCacheSubData *) it->data;
+ NS_LOG_V(DEBUG, "sync subData->id = %s", subData->id);
+ NS_LOG_V(DEBUG, "subData->messageId = %d", subData->messageObId);
+ NS_LOG_V(DEBUG, "subData->cloud_messageId = %d", subData->remote_messageObId);
+ NS_LOG_V(DEBUG, "subData->syncId = %d", subData->syncObId);
+ NS_LOG_V(DEBUG, "subData->cloud_syncId = %d", subData->remote_syncObId);
+ NS_LOG_V(DEBUG, "subData->isWhite = %d", subData->isWhite);
+
if (subData->isWhite)
{
- obArray[obCount++] = subData->syncObId;
+ if(subData->syncObId != 0)
+ obArray[obCount++] = subData->syncObId;
+
+ if(subData->remote_syncObId != 0)
+ obArray[obCount++] = subData->remote_syncObId;
}
it = it->next;
}
case TASK_RECV_READ:
NS_LOG(DEBUG, "CASE TASK_RECV_READ : ");
NSSendSync((NSSyncInfo*) node->taskData);
- NSPushQueue(INTERFACE_SCHEDULER, TASK_CB_SYNC, node->taskData);
+ NSPushQueue(CALLBACK_RESPONSE_SCHEDULER, TASK_CB_SYNC, node->taskData);
break;
default:
pthread_t NSThread[THREAD_COUNT];\r
pthread_mutex_t NSMutex[THREAD_COUNT];\r
sem_t NSSemaphore[THREAD_COUNT];\r
-bool NSIsRunning[THREAD_COUNT] =\r
-{ false, };\r
+bool NSIsRunning[THREAD_COUNT] = { false, };\r
\r
NSTask* NSHeadMsg[THREAD_COUNT];\r
NSTask* NSTailMsg[THREAD_COUNT];\r
\r
-void * NSInterfaceSchedule(void *ptr);\r
+void * NSCallbackResponseSchedule(void *ptr);\r
void * NSDiscoverySchedule(void *ptr);\r
void * NSSubScriptionSchedule(void *ptr);\r
void * NSNotificationSchedule(void *ptr);\r
\r
switch (i)\r
{\r
- case INTERFACE_SCHEDULER:\r
+ case CALLBACK_RESPONSE_SCHEDULER:\r
{\r
NS_LOG(DEBUG, "CASE RESPONSE_SCHEDULER :");\r
- pthread_create(&NSThread[i], NULL, NSInterfaceSchedule, NULL);\r
+ pthread_create(&NSThread[i], NULL, NSCallbackResponseSchedule, NULL);\r
}\r
break;\r
\r
{\r
NS_LOG(DEBUG, "NSFreeData - IN");\r
\r
- if (type == INTERFACE_SCHEDULER)\r
+ if (type == CALLBACK_RESPONSE_SCHEDULER)\r
{\r
switch (task->taskType)\r
{\r
extern sem_t NSSemaphore[THREAD_COUNT];\r
extern bool NSIsRunning[THREAD_COUNT];\r
\r
-extern void * NSResponseSchedule(void *ptr);\r
+extern void * NSCallbackResponseSchedule(void *ptr);\r
extern void * NSDiscoverySchedule(void *ptr);\r
extern void * NSSubScriptionSchedule(void *ptr);\r
extern void * NSNotificationSchedule(void *ptr);\r
return NS_ERROR;\r
}\r
\r
+ NS_LOG_V(DEBUG, "NS Provider ID: %s", NSGetProviderInfo()->providerId);\r
+\r
OCRepPayloadSetUri(payload, NS_ROOT_URI);\r
OCRepPayloadSetPropString(payload, NS_ATTRIBUTE_PROVIDER_ID, NSGetProviderInfo()->providerId);\r
OCRepPayloadSetPropInt(payload, NS_ATTRIBUTE_POLICY, NSGetSubscriptionAccepter());\r
NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
\r
OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
+ NS_LOG_V(DEBUG, "SubList ID = [%s]", subData->id);\r
\r
+ NS_LOG_V(DEBUG, "Consumer Address: %s", entityHandlerRequest->devAddr.addr);\r
+ if(NSIsRemoteServerAddress(entityHandlerRequest->devAddr.addr))\r
+ {\r
+ NS_LOG(DEBUG, "Requested by remote server");\r
+ subData->remote_messageObId = entityHandlerRequest->obsInfo.obsId;\r
+ NS_LOG_V(DEBUG, "SubList message observation ID = [%d]", subData->remote_messageObId);\r
+ }\r
+ else\r
+ {\r
+ NS_LOG(DEBUG, "Requested by local consumer");\r
+ subData->messageObId = entityHandlerRequest->obsInfo.obsId;\r
+ NS_LOG_V(DEBUG, "SubList message observation ID = [%d]", subData->messageObId);\r
+ }\r
subData->isWhite = false;\r
- subData->messageObId = entityHandlerRequest->obsInfo.obsId;\r
- subData->syncObId = 0;\r
\r
element->data = (void*) subData;\r
element->next = NULL;\r
\r
- NS_LOG_V(DEBUG, "SubList IP[ID] = [%s]", subData->id);\r
- NS_LOG_V(DEBUG, "SubList message observation ID = [%d]", subData->messageObId);\r
-\r
if (NSStorageWrite(consumerSubList, element) != NS_OK)\r
{\r
NS_LOG(DEBUG, "fail to write cache");\r
NS_LOG(DEBUG, "resourceType == NS_RESOURCE_SYNC");\r
NSCacheElement * element = (NSCacheElement *) OICMalloc(sizeof(NSCacheElement));\r
NSCacheSubData * subData = (NSCacheSubData *) OICMalloc(sizeof(NSCacheSubData));\r
+\r
OICStrcpy(subData->id, UUID_STRING_SIZE, id);\r
+ NS_LOG_V(DEBUG, "SubList ID = [%s]", subData->id);\r
\r
+ NS_LOG_V(DEBUG, "Consumer Address: %s", entityHandlerRequest->devAddr.addr);\r
+ if(NSIsRemoteServerAddress(entityHandlerRequest->devAddr.addr))\r
+ {\r
+ NS_LOG(DEBUG, "Requested by remote server");\r
+ subData->remote_syncObId = entityHandlerRequest->obsInfo.obsId;\r
+ NS_LOG_V(DEBUG, "SubList sync observation ID = [%d]", subData->remote_syncObId);\r
+ }\r
+ else\r
+ {\r
+ NS_LOG(DEBUG, "Requested by local consumer");\r
+ subData->syncObId = entityHandlerRequest->obsInfo.obsId;\r
+ NS_LOG_V(DEBUG, "SubList sync observation ID = [%d]", subData->syncObId);\r
+ }\r
\r
subData->isWhite = false;\r
- subData->syncObId = entityHandlerRequest->obsInfo.obsId;\r
- subData->messageObId = 0;\r
\r
element->data = (void*) subData;\r
element->next = NULL;\r
\r
- NS_LOG_V(DEBUG, "SubList IP[ID] = [%s]", subData->id);\r
- NS_LOG_V(DEBUG, "SubList sync observation ID = [%d]", subData->syncObId);\r
-\r
if (NSStorageWrite(consumerSubList, element) != NS_OK)\r
{\r
NS_LOG(ERROR, "Fail to write cache");\r
{\r
NS_LOG(DEBUG, "NSAskAcceptanceToUser - IN");\r
\r
- NSPushQueue(INTERFACE_SCHEDULER, TASK_CB_SUBSCRIPTION, entityHandlerRequest);\r
+ NSPushQueue(CALLBACK_RESPONSE_SCHEDULER, TASK_CB_SUBSCRIPTION, entityHandlerRequest);\r
\r
NS_LOG(DEBUG, "NSAskAcceptanceToUser - OUT");\r
}\r
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
#include "NSProviderSystem.h"\r
\r
+#define MAX_SERVER_ADDRESS 32\r
static NSConnectionState NSProviderConnectionState;\r
+static char NSRemoteServerAddress[MAX_SERVER_ADDRESS] = {0,};\r
+\r
NSProviderInfo * providerInfo;\r
\r
void NSSetProviderConnectionState(NSConnectionState state)\r
return NSProviderConnectionState;\r
}\r
\r
+void NSSetRemoteServerAddress(char *serverAddress)\r
+{\r
+\r
+ OICStrcpy(NSRemoteServerAddress, MAX_SERVER_ADDRESS, serverAddress);\r
+}\r
+\r
+void NSDeleteRemoteServerAddress(char *serverAddress)\r
+{\r
+ NS_LOG_V(DEBUG, "Delete cloud address: %s", serverAddress);\r
+\r
+ memset(NSRemoteServerAddress, 0, MAX_SERVER_ADDRESS);\r
+}\r
+\r
+bool NSIsRemoteServerAddress(char *serverAddress)\r
+{\r
+ NS_LOG_V(DEBUG, "Check server address: %s", serverAddress);\r
+\r
+ if(serverAddress != NULL)\r
+ {\r
+ return strstr(NSRemoteServerAddress, serverAddress);\r
+ }\r
+\r
+ return false;\r
+}\r
+\r
void NSInitProviderInfo()\r
{\r
NS_LOG(DEBUG, "NSInitProviderInfo");\r
NS_LOG_V(DEBUG, "currData_ID = %s", itData->id);\r
NS_LOG_V(DEBUG, "currData_MsgObID = %d", itData->messageObId);\r
NS_LOG_V(DEBUG, "currData_SyncObID = %d", itData->syncObId);\r
+ NS_LOG_V(DEBUG, "currData_Cloud_MsgObID = %d", itData->remote_messageObId);\r
+ NS_LOG_V(DEBUG, "currData_Cloud_SyncObID = %d", itData->remote_syncObId);\r
NS_LOG_V(DEBUG, "currData_IsWhite = %d", itData->isWhite);\r
\r
NS_LOG_V(DEBUG, "update state = %d", state);\r
NS_LOG_V(DEBUG, "currData_ID = %s", itData->id);\r
NS_LOG_V(DEBUG, "currData_MsgObID = %d", itData->messageObId);\r
NS_LOG_V(DEBUG, "currData_SyncObID = %d", itData->syncObId);\r
+ NS_LOG_V(DEBUG, "currData_Cloud_MsgObID = %d", itData->remote_messageObId);\r
+ NS_LOG_V(DEBUG, "currData_Cloud_SyncObID = %d", itData->remote_syncObId);\r
NS_LOG_V(DEBUG, "currData_IsWhite = %d", itData->isWhite);\r
\r
NS_LOG_V(DEBUG, "subData_ID = %s", subData->id);\r
NS_LOG_V(DEBUG, "subData_MsgObID = %d", subData->messageObId);\r
NS_LOG_V(DEBUG, "subData_SyncObID = %d", subData->syncObId);\r
+ NS_LOG_V(DEBUG, "subData_Cloud_MsgObID = %d", subData->remote_messageObId);\r
+ NS_LOG_V(DEBUG, "subData_Cloud_SyncObID = %d", subData->remote_syncObId);\r
NS_LOG_V(DEBUG, "subData_IsWhite = %d", subData->isWhite);\r
\r
- if (itData->messageObId == 0)\r
+ if (subData->messageObId != 0)\r
{\r
itData->messageObId = subData->messageObId;\r
}\r
\r
- if (itData->syncObId == 0)\r
+ if (subData->syncObId != 0)\r
{\r
itData->syncObId = subData->syncObId;\r
}\r
\r
+ if (subData->remote_messageObId != 0)\r
+ {\r
+ itData->remote_messageObId = subData->remote_messageObId;\r
+ }\r
+\r
+ if (subData->remote_syncObId != 0)\r
+ {\r
+ itData->remote_syncObId = subData->remote_syncObId;\r
+ NS_LOG_V(DEBUG, "sync id cached: %d", itData->remote_syncObId);\r
+ }\r
+\r
NS_LOG(DEBUG, "Update Data - OUT");\r
\r
pthread_mutex_unlock(&NSCacheMutex);\r
//
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+#include "../include/NSProvider.h"
+
#include <gtest/gtest.h>
#include <HippoMocks/hippomocks.h>
#include <atomic>
#include "NSConsumerSimulator.h"
#include "NSCommon.h"
-#include "NSProviderInterface.h"
namespace
{