typedef struct
{
char providerId[NS_UUID_STRING_SIZE];
+ NSTopicList * topicList;
} NSProvider;
return retInfo;
}
+void NSRemoveProviderTopicList(NSTopicList * topicList, size_t dimensionSize)
+{
+ NS_VERIFY_NOT_NULL_V(topicList);
+
+ for (int i = -1; i < (int)dimensionSize; i++)
+ {
+ NSOICFree(topicList->topics[i]);
+ }
+ NSOICFree(topicList);
+}
+
+NSTopicList * NSCopyProviderTopicList(NSTopicList * topicList, size_t dimensionSize)
+{
+ NS_VERIFY_NOT_NULL(topicList, NULL);
+
+ NSTopicList * newTopicList = (NSTopicList *)OICMalloc(sizeof(NSTopicList));
+ NS_VERIFY_NOT_NULL(newTopicList, NULL);
+
+ OICStrcpy(newTopicList->consumerId, NS_DEVICE_ID_LENGTH, topicList->consumerId);
+
+ newTopicList->topics = (NSTopic **) OICMalloc(sizeof(NSTopic *)*dimensionSize);
+ NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(newTopicList->topics,
+ NULL, NSRemoveProviderTopicList(newTopicList, -1));
+
+ for (int i = 0; i < (int)dimensionSize; i++)
+ {
+ newTopicList->topics[i] = (NSTopic *) OICMalloc(sizeof(NSTopic));
+ NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(newTopicList->topics[i],
+ NULL, NSRemoveProviderTopicList(newTopicList, i));
+
+ newTopicList->topics[i]->topicName = OICStrdup(topicList->topics[i]->topicName);
+ newTopicList->topics[i]->state = topicList->topics[i]->state;
+ }
+
+ return newTopicList;
+}
+
+void NSCopyProviderPostClean(
+ NSProviderConnectionInfo * connections, NSProvider_internal * provider)
+{
+ NSRemoveConnections(connections);
+ NSOICFree(provider);
+}
+
NSProvider_internal * NSCopyProvider(NSProvider_internal * prov)
{
NS_VERIFY_NOT_NULL(prov, NULL);
NSProviderConnectionInfo * connections = NSCopyProviderConnections(prov->connection);
NS_VERIFY_NOT_NULL(connections, NULL);
- NSProvider_internal * newProv = (NSProvider_internal *)OICMalloc(sizeof(NSProvider_internal));
+ NSProvider_internal * newProv = (NSProvider_internal *) OICMalloc(sizeof(NSProvider_internal));
NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(newProv, NULL, NSRemoveConnections(connections));
+ newProv->topicList = NULL;
+ newProv->topicListSize = 0;
+
+ if (prov->topicList)
+ {
+ NSTopicList * topicList = NSCopyProviderTopicList(prov->topicList, prov->topicListSize);
+ NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(topicList, NULL,
+ NSCopyProviderPostClean(connections, newProv));
+
+ newProv->topicList = topicList;
+ newProv->topicListSize = prov->topicListSize;
+ }
+
newProv->connection = connections;
OICStrcpy(newProv->providerId, NS_DEVICE_ID_LENGTH, prov->providerId);
newProv->messageUri = OICStrdup(prov->messageUri);
newProv->syncUri = OICStrdup(prov->syncUri);
+ newProv->topicUri = OICStrdup(prov->topicUri);
newProv->accessPolicy = prov->accessPolicy;
return newProv;
NSOICFree(prov->messageUri);
NSOICFree(prov->syncUri);
+ NSOICFree(prov->topicUri);
NSRemoveConnections(prov->connection);
+ NSRemoveProviderTopicList(prov->topicList, prov->topicListSize);
NSOICFree(prov);
}
NSSyncInfo_internal * NSCopySyncInfo(NSSyncInfo_internal *);
void NSRemoveSyncInfo(NSSyncInfo_internal *);
+NSTopicList * NSCopyProviderTopicList(NSTopicList * topicList, size_t dimensionSize);
+void NSRemoveProviderTopicList(NSTopicList * topicList, size_t dimensionSize);
+
OCStackResult NSInvokeRequest(OCDoHandle * handle,
OCMethod method, const OCDevAddr * addr,
const char * queryUrl, OCPayload * payload,
//
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+#include "NSConsumerCommunication.h"
+
#include "NSConstants.h"
+#include "NSUtil.h"
#include "NSConsumerCommon.h"
-#include "NSConsumerCommunication.h"
#include "oic_malloc.h"
#include "oic_string.h"
#include "ocpayload.h"
#define NS_SYNC_URI "/notification/sync"
-unsigned long NS_MESSAGE_ACCEPTANCE = 1;
+static unsigned long NS_MESSAGE_ACCEPTANCE = 1;
NSMessage * NSCreateMessage_internal(uint64_t msgId, const char * providerId);
NSSyncInfo * NSCreateSyncInfo_consumer(uint64_t msgId, const char * providerId, NSSyncType state);
}
void NSGetProviderPostClean(
- char * pId, char * mUri, char * sUri, NSProviderConnectionInfo * connection)
+ char * pId, char * mUri, char * sUri, char * tUri, NSProviderConnectionInfo * connection)
{
NSOICFree(pId);
NSOICFree(mUri);
NSOICFree(sUri);
+ NSOICFree(tUri);
NSRemoveConnections(connection);
}
char * providerId = NULL;
char * messageUri = NULL;
char * syncUri = NULL;
+ char * topicUri = NULL;
int64_t accepter = 0;
NSProviderConnectionInfo * connection = NULL;
NS_LOG(DEBUG, "get message URI");
getResult = OCRepPayloadGetPropString(payload, NS_ATTRIBUTE_MESSAGE, & messageUri);
NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(getResult == true ? (void *) 1 : NULL, NULL,
- NSGetProviderPostClean(providerId, messageUri, syncUri, connection));
+ NSGetProviderPostClean(providerId, messageUri, syncUri, topicUri, connection));
NS_LOG(DEBUG, "get sync URI");
getResult = OCRepPayloadGetPropString(payload, NS_ATTRIBUTE_SYNC, & syncUri);
NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(getResult == true ? (void *) 1 : NULL, NULL,
- NSGetProviderPostClean(providerId, messageUri, syncUri, connection));
+ NSGetProviderPostClean(providerId, messageUri, syncUri, topicUri, connection));
/* TODO next commit, modify code.
NS_LOG(DEBUG, "get topic URI");
NSProvider_internal * newProvider
= (NSProvider_internal *)OICMalloc(sizeof(NSProvider_internal));
NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(newProvider, NULL,
- NSGetProviderPostClean(providerId, messageUri, syncUri, connection));
+ NSGetProviderPostClean(providerId, messageUri, syncUri, topicUri, connection));
OICStrcpy(newProvider->providerId, sizeof(char) * NS_DEVICE_ID_LENGTH, providerId);
NSOICFree(providerId);
newProvider->messageUri = messageUri;
newProvider->syncUri = syncUri;
+ newProvider->topicUri = topicUri;
newProvider->accessPolicy = (NSSelector)accepter;
newProvider->connection = connection;