X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=service%2Fnotification%2Fsrc%2Fconsumer%2FNSConsumerInterface.c;h=f52b20d97da12a4d5659d49fb9dd58a3892a2b60;hb=3c093548382bb2542c87a67e6e5fa32552c29cb3;hp=a6d48288200810808a77afeec483ca5c1863f1c8;hpb=8b01ab6a7527ae27317090d6d865dc022ba2aac2;p=platform%2Fupstream%2Fiotivity.git diff --git a/service/notification/src/consumer/NSConsumerInterface.c b/service/notification/src/consumer/NSConsumerInterface.c index a6d4828..f52b20d 100644 --- a/service/notification/src/consumer/NSConsumerInterface.c +++ b/service/notification/src/consumer/NSConsumerInterface.c @@ -27,6 +27,7 @@ #include "NSConsumerCommon.h" #include "NSConstants.h" #include "NSConsumerScheduler.h" +#include "NSUtil.h" #include "oic_malloc.h" #include "oic_string.h" @@ -36,12 +37,10 @@ NSResult NSStartConsumer(NSConsumerConfig config) bool isStartedConsumer = NSIsStartedConsumer(); NS_VERIFY_NOT_NULL(isStartedConsumer == false ? (void *) 1 : NULL, NS_OK); - NS_VERIFY_NOT_NULL(config.discoverCb, NS_ERROR); NS_VERIFY_NOT_NULL(config.messageCb, NS_ERROR); NS_VERIFY_NOT_NULL(config.syncInfoCb, NS_ERROR); NS_VERIFY_NOT_NULL(config.changedCb, NS_ERROR); - NSSetDiscoverProviderCb(config.discoverCb); NSSetMessagePostedCb(config.messageCb); NSSetNotificationSyncCb(config.syncInfoCb); NSSetProviderChangedCb(config.changedCb); @@ -59,7 +58,6 @@ NSResult NSStopConsumer() bool isStartedConsumer = NSIsStartedConsumer(); NS_VERIFY_NOT_NULL(isStartedConsumer == true ? (void *) 1 : NULL, NS_ERROR); - NSSetDiscoverProviderCb(NULL); NSSetMessagePostedCb(NULL); NSSetNotificationSyncCb(NULL); NSSetProviderChangedCb(NULL); @@ -70,8 +68,38 @@ NSResult NSStopConsumer() return NS_OK; } -NSResult NSConsumerEnableRemoteService(char *serverAddress) +#ifdef WITH_MQ +NSResult NSConsumerSubscribeMQService(const char * serverAddress, const char * topicName) { + NS_VERIFY_NOT_NULL(serverAddress, NS_ERROR); + NS_VERIFY_NOT_NULL(topicName, NS_ERROR); + bool isStartedConsumer = NSIsStartedConsumer(); + NS_VERIFY_NOT_NULL(isStartedConsumer == true ? (void *) 1 : NULL, NS_ERROR); + + char * queryAddr = NSGetQueryAddress(serverAddress); + NS_VERIFY_NOT_NULL(queryAddr, NS_ERROR); + + NSMQTopicAddress * topicAddr = (NSMQTopicAddress *)OICMalloc(sizeof(NSMQTopicAddress)); + NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(queryAddr, NS_ERROR, NSOICFree(queryAddr)); + + topicAddr->serverAddr = queryAddr; + topicAddr->topicName = OICStrdup(topicName); + + NSTask * subMQTask = NSMakeTask(TASK_MQ_REQ_SUBSCRIBE, (void *)topicAddr); + NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(subMQTask, NS_ERROR, + { + NSOICFree(topicAddr->serverAddr); + NSOICFree(topicAddr->topicName) + NSOICFree(topicAddr); + }); + + return NSConsumerPushEvent(subMQTask); +} +#endif + +NSResult NSConsumerEnableRemoteService(const char * serverAddress) +{ + NS_VERIFY_NOT_NULL(serverAddress, NS_ERROR); bool isStartedConsumer = NSIsStartedConsumer(); NS_VERIFY_NOT_NULL(isStartedConsumer == true ? (void *) 1 : NULL, NS_ERROR); @@ -84,23 +112,39 @@ NSResult NSConsumerEnableRemoteService(char *serverAddress) return NSConsumerPushEvent(discoverTask); } -NSResult NSSubscribe(NSProvider * provider) +NSResult NSSubscribe(const char * providerId) { + NS_VERIFY_NOT_NULL(providerId, NS_ERROR); bool isStartedConsumer = NSIsStartedConsumer(); NS_VERIFY_NOT_NULL(isStartedConsumer == true ? (void *) 1 : NULL, NS_ERROR); - NSTask * subscribeTask = NSMakeTask(TASK_CONSUMER_REQ_SUBSCRIBE, (void *) provider); + NSProvider_internal * provInternal = NSConsumerFindNSProvider(providerId); + NS_VERIFY_NOT_NULL(provInternal, NS_ERROR); + + NSProvider * prov = (NSProvider *)NSCopyProvider(provInternal); + NSRemoveProvider_internal(provInternal); + NS_VERIFY_NOT_NULL(prov, NS_ERROR); + + NSTask * subscribeTask = NSMakeTask(TASK_CONSUMER_REQ_SUBSCRIBE, (void *) prov); NS_VERIFY_NOT_NULL(subscribeTask, NS_ERROR); return NSConsumerPushEvent(subscribeTask); } -NSResult NSUnsubscribe(NSProvider * provider) +NSResult NSUnsubscribe(const char * providerId) { + NS_VERIFY_NOT_NULL(providerId, NS_ERROR); bool isStartedConsumer = NSIsStartedConsumer(); NS_VERIFY_NOT_NULL(isStartedConsumer == true ? (void *) 1 : NULL, NS_ERROR); - NSTask * unsubscribeTask = NSMakeTask(TASK_CONSUMER_REQ_SUBSCRIBE_CANCEL, (void *) provider); + NSProvider_internal * provInternal = NSConsumerFindNSProvider(providerId); + NS_VERIFY_NOT_NULL(provInternal, NS_ERROR); + + NSProvider * prov = (NSProvider *)NSCopyProvider((NSProvider_internal *) provInternal); + NSRemoveProvider_internal(provInternal); + NS_VERIFY_NOT_NULL(prov, NS_ERROR); + + NSTask * unsubscribeTask = NSMakeTask(TASK_CONSUMER_REQ_SUBSCRIBE_CANCEL, (void *) prov); NS_VERIFY_NOT_NULL(unsubscribeTask, NS_ERROR); return NSConsumerPushEvent(unsubscribeTask); @@ -108,6 +152,7 @@ NSResult NSUnsubscribe(NSProvider * provider) NSResult NSConsumerSendSyncInfo(const char * providerId, uint64_t messageId, NSSyncType type) { + NS_VERIFY_NOT_NULL(providerId, NS_ERROR); bool isStartedConsumer = NSIsStartedConsumer(); NS_VERIFY_NOT_NULL(isStartedConsumer == true ? (void *) 1 : NULL, NS_ERROR); @@ -137,6 +182,7 @@ NSResult NSRescanProvider() NSProvider * NSConsumerGetProvider(const char * providerId) { + NS_VERIFY_NOT_NULL(providerId, NULL); bool isStartedConsumer = NSIsStartedConsumer(); NS_VERIFY_NOT_NULL(isStartedConsumer == true ? (void *) 1 : NULL, NULL); @@ -152,68 +198,45 @@ NSProvider * NSConsumerGetProvider(const char * providerId) return retProv; } -NSMessage * NSConsumerGetMessage(uint64_t messageId) +NSTopicLL * NSConsumerGetTopicList(const char * providerId) { + NS_VERIFY_NOT_NULL(providerId, NULL); bool isStartedConsumer = NSIsStartedConsumer(); NS_VERIFY_NOT_NULL(isStartedConsumer == true ? (void *) 1 : NULL, NULL); - char msgId[NS_DEVICE_ID_LENGTH] = { 0, }; - snprintf(msgId, NS_DEVICE_ID_LENGTH, "%lld", (long long int)messageId); + NS_LOG_V(INFO_PRIVATE, "NSProvider ID: %s", providerId); + NSProvider_internal * prov_internal = NSConsumerFindNSProvider(providerId); + NS_VERIFY_NOT_NULL(prov_internal, NULL); - return (NSMessage *) NSConsumerFindNSMessage(msgId); -} + NSTopicLL * retTopics = prov_internal->topicLL; + prov_internal->topicLL = NULL; + NSRemoveProvider_internal(prov_internal); -NSResult NSConsumerGetInterestTopics(NSProvider * provider) -{ - bool isStartedConsumer = NSIsStartedConsumer(); - NS_VERIFY_NOT_NULL(isStartedConsumer == true ? (void *) 1 : NULL, NS_ERROR); - - NS_VERIFY_NOT_NULL(provider, NS_ERROR); - - NS_LOG_V(DEBUG, "NSProvider ID: %s", provider->providerId); - NSProvider_internal * prov = NSConsumerFindNSProvider(provider->providerId); - NS_VERIFY_NOT_NULL(prov, NS_ERROR); - NSSelector selector = prov->accessPolicy; - NSRemoveProvider_internal(prov); - - NS_VERIFY_NOT_NULL(selector == NS_SELECTION_CONSUMER ? (void *) 1 : NULL, NS_ERROR); - - NSTask * topicTask = NSMakeTask(TASK_CONSUMER_GET_TOPIC_LIST, (void *) provider); - NS_VERIFY_NOT_NULL(topicTask, NS_ERROR); - - return NSConsumerPushEvent(topicTask); + return retTopics; } -NSResult NSConsumerSelectInterestTopics(NSProvider * provider) +NSResult NSConsumerUpdateTopicList(const char * providerId, NSTopicLL * topics) { + NS_VERIFY_NOT_NULL(providerId, NS_ERROR); + NS_VERIFY_NOT_NULL(topics, NS_ERROR); bool isStartedConsumer = NSIsStartedConsumer(); NS_VERIFY_NOT_NULL(isStartedConsumer == true ? (void *) 1 : NULL, NS_ERROR); - NS_VERIFY_NOT_NULL(provider, NS_ERROR); - NS_VERIFY_NOT_NULL(provider->topicLL, NS_ERROR); + NSProvider_internal * prov_internal = NSConsumerFindNSProvider(providerId); + NS_VERIFY_NOT_NULL(prov_internal, NS_ERROR); + NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(prov_internal->topicLL, NS_ERROR, + NSRemoveProvider_internal(prov_internal)); - NSProvider_internal * prov = NSConsumerFindNSProvider(provider->providerId); - NS_VERIFY_NOT_NULL(prov, NS_ERROR); + NSSelector selector = prov_internal->accessPolicy; + NS_VERIFY_NOT_NULL_WITH_POST_CLEANING( + selector == NS_SELECTION_CONSUMER ? (void *) 1 : NULL, NS_ERROR, + NSRemoveProvider_internal(prov_internal)); - NSSelector selector = prov->accessPolicy; - NSRemoveProvider_internal(prov); - NS_VERIFY_NOT_NULL(selector == NS_SELECTION_CONSUMER ? (void *) 1 : NULL, NS_ERROR); + NSRemoveTopicLL(prov_internal->topicLL); + prov_internal->topicLL = NSCopyTopicLL(topics); - NSTask * topicTask = NSMakeTask(TASK_CONSUMER_SELECT_TOPIC_LIST, (void *) provider); - NS_VERIFY_NOT_NULL(provider, NS_ERROR); + NSTask * topicTask = NSMakeTask(TASK_CONSUMER_SELECT_TOPIC_LIST, (void *) prov_internal); + NS_VERIFY_NOT_NULL(topicTask, NS_ERROR); return NSConsumerPushEvent(topicTask); } - -NSResult NSDropNSMessage(NSMessage * obj) -{ - NS_VERIFY_NOT_NULL(obj, NS_ERROR); - - obj->messageId = 0; - NSOICFree(obj->title); - NSOICFree(obj->contentText); - NSOICFree(obj->sourceName); - NSOICFree(obj); - - return NS_OK; -}