Add ResourceBroker Sconscript
[platform/upstream/iotivity.git] / service / basis / resourceBroker / src / DevicePresence.cpp
1 //******************************************************************
2 //
3 // Copyright 2015 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 "DevicePresence.h"
22
23 DevicePresence::DevicePresence(PrimitiveResourcePtr pResource, BrokerCB _cb)
24 {
25     pSubscribeRequestCB = std::bind(&DevicePresence::subscribeCB, this,
26             std::placeholders::_1, std::placeholders::_2, std::placeholders::_3);
27
28     presenceResourceList
29     = std::unique_ptr<std::list<ResourcePresencePtr>>(new std::list<ResourcePresencePtr>);
30     addPresenceResource(pResource, _cb);
31
32     OC::OCPlatform::subscribePresence(presenceHandle, pResource->getHost(),
33             BROKER_TRANSPORT, pSubscribeRequestCB);
34 }
35
36 DevicePresence::~DevicePresence()
37 {
38     // TODO Auto-generated destructor stub
39     OC::OCPlatform::unsubscribePresence(presenceHandle);
40     presenceResourceList->clear();
41 }
42
43 void DevicePresence::addPresenceResource(PrimitiveResourcePtr pResource, BrokerCB _cb)
44 {
45     ResourcePresencePtr newPresenceResource = ResourcePresencePtr(new ResourcePresence(pResource, _cb));
46     presenceResourceList->push_back(newPresenceResource);
47 }
48
49 ResourcePresencePtr DevicePresence::findResourcePresence(PrimitiveResourcePtr pResource, BrokerCB _cb)
50 {
51     ResourcePresencePtr retResource(nullptr);
52     if (presenceResourceList->empty())// || pResource.isEmpty())
53     {
54        return retResource;
55     }
56     else
57     {
58        std::list<ResourcePresencePtr>::iterator it;
59
60        ResourcePresencePtr temp = ResourcePresencePtr(new ResourcePresence(pResource, _cb));
61        it = std::find(presenceResourceList->begin(), presenceResourceList->end(), temp);
62
63        if(it == presenceResourceList->end())
64        {
65            return retResource;
66        }
67        else
68        {
69            retResource = *it;
70        }
71     }
72
73     return retResource;
74 }
75
76 void DevicePresence::subscribeCB(OCStackResult ret,
77         const unsigned int seq, const std::string& msg)
78 {
79
80 }