2
* Copyright (C) 2010, 2011 Tuomo Penttinen, all rights reserved.
4
* Author: Tuomo Penttinen <tp@herqq.org>
6
* This file is part of Herqq UPnP (HUPnP) library.
8
* Herqq UPnP is free software: you can redistribute it and/or modify
9
* it under the terms of the GNU Lesser General Public License as published by
10
* the Free Software Foundation, either version 3 of the License, or
11
* (at your option) any later version.
13
* Herqq UPnP is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU Lesser General Public License for more details.
18
* You should have received a copy of the GNU Lesser General Public License
19
* along with Herqq UPnP. If not, see <http://www.gnu.org/licenses/>.
22
#include "hservices_setupdata.h"
23
#include "../dataelements/hserviceid.h"
24
#include "../dataelements/hresourcetype.h"
26
#include <QtCore/QSet>
34
/*******************************************************************************
35
* HServiceSetupPrivate
36
******************************************************************************/
37
class HServiceSetupPrivate :
43
HServiceId m_serviceId;
44
HResourceType m_serviceType;
46
HInclusionRequirement m_inclusionReq;
48
HServiceSetupPrivate() :
49
m_serviceId(), m_serviceType(), m_version(0),
50
m_inclusionReq(InclusionRequirementUnknown)
54
~HServiceSetupPrivate()
59
/*******************************************************************************
61
******************************************************************************/
62
HServiceSetup::HServiceSetup() :
63
h_ptr(new HServiceSetupPrivate())
67
HServiceSetup::HServiceSetup(
68
const HServiceId& id, const HResourceType& serviceType,
69
HInclusionRequirement ireq) :
70
h_ptr(new HServiceSetupPrivate())
72
h_ptr->m_serviceId = id;
73
h_ptr->m_serviceType = serviceType;
75
h_ptr->m_inclusionReq = ireq;
78
HServiceSetup::HServiceSetup(
79
const HServiceId& id, const HResourceType& serviceType, int version,
80
HInclusionRequirement ireq) :
81
h_ptr(new HServiceSetupPrivate())
83
h_ptr->m_serviceId = id;
84
h_ptr->m_serviceType = serviceType;
85
h_ptr->m_version = version;
86
h_ptr->m_inclusionReq = ireq;
89
HServiceSetup::~HServiceSetup()
93
HServiceSetup& HServiceSetup::operator=(const HServiceSetup& other)
95
Q_ASSERT(&other != this);
102
HServiceSetup::HServiceSetup(const HServiceSetup& other) :
105
Q_ASSERT(this != &other);
108
bool HServiceSetup::isValid(HValidityCheckLevel checkLevel) const
110
return h_ptr->m_serviceId.isValid(checkLevel) &&
111
h_ptr->m_serviceType.isValid() &&
112
h_ptr->m_version > 0 &&
113
h_ptr->m_inclusionReq != InclusionRequirementUnknown;
116
HInclusionRequirement HServiceSetup::inclusionRequirement() const
118
return h_ptr->m_inclusionReq;
121
const HServiceId& HServiceSetup::serviceId() const
123
return h_ptr->m_serviceId;
126
const HResourceType& HServiceSetup::serviceType() const
128
return h_ptr->m_serviceType;
131
int HServiceSetup::version() const
133
return h_ptr->m_version;
136
void HServiceSetup::setInclusionRequirement(HInclusionRequirement arg)
138
h_ptr->m_inclusionReq = arg;
141
void HServiceSetup::setServiceId(const HServiceId& arg)
143
h_ptr->m_serviceId = arg;
146
void HServiceSetup::setServiceType(const HResourceType& arg)
148
h_ptr->m_serviceType = arg;
151
void HServiceSetup::setVersion(int version)
153
h_ptr->m_version = version;
156
bool operator==(const HServiceSetup& obj1, const HServiceSetup& obj2)
158
return obj1.inclusionRequirement() == obj2.inclusionRequirement() &&
159
obj1.serviceId() == obj2.serviceId() &&
160
obj1.serviceType() == obj2.serviceType() &&
161
obj1.version() == obj2.version();
164
/*******************************************************************************
166
******************************************************************************/
167
HServicesSetupData::HServicesSetupData() :
168
m_serviceSetupInfos()
172
HServicesSetupData::~HServicesSetupData()
176
bool HServicesSetupData::insert(const HServiceSetup& setupInfo, bool overWrite)
178
if (!setupInfo.isValid(StrictChecks))
183
const HServiceId& id = setupInfo.serviceId();
184
if (!overWrite && m_serviceSetupInfos.contains(id))
189
m_serviceSetupInfos.insert(id, setupInfo);
193
bool HServicesSetupData::remove(const HServiceId& serviceId)
195
if (m_serviceSetupInfos.contains(serviceId))
197
m_serviceSetupInfos.remove(serviceId);
204
HServiceSetup HServicesSetupData::get(const HServiceId& serviceId) const
206
return m_serviceSetupInfos.value(serviceId);
209
bool HServicesSetupData::contains(const HServiceId& id) const
211
return m_serviceSetupInfos.contains(id);
214
QSet<HServiceId> HServicesSetupData::serviceIds() const
216
return m_serviceSetupInfos.keys().toSet();
219
int HServicesSetupData::size() const
221
return m_serviceSetupInfos.size();
224
bool HServicesSetupData::isEmpty() const
226
return m_serviceSetupInfos.isEmpty();
229
bool operator==(const HServicesSetupData& obj1, const HServicesSetupData& obj2)
231
return obj1.m_serviceSetupInfos == obj2.m_serviceSetupInfos;