1// Copyright (C) 2017 Witekio.
2// Copyright (C) 2018 The Qt Company Ltd.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
4
5#include "qcoapresource_p.h"
6
7QT_BEGIN_NAMESPACE
8
9/*!
10 \class QCoapResource
11 \inmodule QtCoap
12
13 \brief The QCoapResource class holds information about a discovered
14 resource.
15
16 \reentrant
17
18 The QCoapRequest contains data as the path and title of the resource
19 and other ancillary information.
20
21 \sa QCoapResourceDiscoveryReply
22*/
23
24/*!
25 Constructs a new QCoapResource.
26 */
27QCoapResource::QCoapResource() :
28 d(new QCoapResourcePrivate)
29{
30}
31
32/*!
33 Constructs a new CoAP resource as a copy of \a other, making the two
34 resources identical.
35*/
36QCoapResource::QCoapResource(const QCoapResource &other) :
37 d(other.d)
38{
39}
40
41/*!
42 Destroy the QCoapResource.
43 */
44QCoapResource::~QCoapResource()
45{
46}
47
48/*!
49 Copies \a other into this resource, making the two resources identical.
50 Returns a reference to this QCoapResource.
51*/
52QCoapResource &QCoapResource::operator=(const QCoapResource &other)
53{
54 d = other.d;
55 return *this;
56}
57
58/*!
59 Swaps this resource with \a other. This operation is very fast and never fails.
60 */
61void QCoapResource::swap(QCoapResource &other) noexcept
62{
63 d.swap(other&: other.d);
64}
65
66/*!
67 Returns the host of the resource.
68
69 \sa setHost()
70 */
71QHostAddress QCoapResource::host() const
72{
73 return d->host;
74}
75
76/*!
77 Returns the path of the resource.
78
79 \sa setPath()
80 */
81QString QCoapResource::path() const
82{
83 return d->path;
84}
85
86/*!
87 Returns the title of the resource.
88
89 \sa setTitle()
90 */
91QString QCoapResource::title() const
92{
93 return d->title;
94}
95
96/*!
97 Returns \c true if the resource is observable
98
99 \sa setObservable()
100 */
101bool QCoapResource::observable() const
102{
103 return d->observable;
104}
105
106/*!
107 Returns the type of the resource.
108
109 \sa setResourceType()
110 */
111QString QCoapResource::resourceType() const
112{
113 return d->resourceType;
114}
115
116/*!
117 Returns the interface description of the resource.
118
119 The Interface Description 'if' attribute is an opaque string used to
120 provide a name or URI indicating a specific interface definition used
121 to interact with the target resource. It is specified in
122 \l{https://tools.ietf.org/html/rfc6690#section-3.2}{RFC 6690}.
123
124 \sa setInterface()
125 */
126QString QCoapResource::interface() const
127{
128 return d->interface;
129}
130
131/*!
132 Returns the maximum size of the resource.
133
134 The maximum size estimate attribute 'sz' gives an indication of the
135 maximum size of the resource representation returned by performing a
136 GET on the target URI. It is specified in
137 \l{https://tools.ietf.org/html/rfc6690#section-3.3}{RFC 6690}.
138
139 \sa setMaximumSize()
140 */
141int QCoapResource::maximumSize() const
142{
143 return d->maximumSize;
144}
145
146/*!
147 Returns the Content-Format code of the resource.
148
149 The Content-Format code corresponds to the 'ct' attribute and provides a
150 hint about the Content-Formats this resource returns. It is specified
151 in \l{https://tools.ietf.org/html/rfc7252#section-7.2.1}{RFC 7252}.
152
153 \sa setContentFormat()
154 */
155uint QCoapResource::contentFormat() const
156{
157 return d->contentFormat;
158}
159
160/*!
161 Sets the host of the resource to \a host.
162
163 \sa host()
164 */
165void QCoapResource::setHost(const QHostAddress &host)
166{
167 d->host = host;
168}
169
170/*!
171 Sets the path of the resource to \a path.
172
173 \sa path()
174 */
175void QCoapResource::setPath(const QString &path)
176{
177 d->path = path;
178}
179
180/*!
181 Sets the title of the resource to \a title.
182
183 \sa title()
184 */
185void QCoapResource::setTitle(const QString &title)
186{
187 d->title = title;
188}
189
190/*!
191 Makes the resource observable if the \a observable
192 parameter is \c true.
193
194 \sa observable()
195 */
196void QCoapResource::setObservable(bool observable)
197{
198 d->observable = observable;
199}
200
201/*!
202 Sets the resource type to \a resourceType.
203
204 \sa resourceType()
205 */
206void QCoapResource::setResourceType(const QString &resourceType)
207{
208 d->resourceType = resourceType;
209}
210
211/*!
212 Sets the interface of the resource to \a interface.
213
214 \sa interface()
215 */
216void QCoapResource::setInterface(const QString &interface)
217{
218 d->interface = interface;
219}
220
221/*!
222 Sets the maximum size of the resource to \a maximumSize.
223
224 \sa maximumSize()
225 */
226void QCoapResource::setMaximumSize(int maximumSize)
227{
228 d->maximumSize = maximumSize;
229}
230
231/*!
232 Sets the content format of the resource to \a contentFormat. The content
233 format can be one of the content formats defined in \l {CoAP Content-Formats Registry}.
234
235 \note CoAP supports common content formats such as XML, JSON, and so on, but
236 these are text based and consequently heavy both in payload and in processing.
237 One of the recommended content formats to use with CoAP is CBOR, which is
238 designed to be used in such contexts.
239
240 \sa contentFormat(), QCborStreamWriter, QCborStreamReader
241 */
242void QCoapResource::setContentFormat(uint contentFormat)
243{
244 d->contentFormat = contentFormat;
245}
246
247QT_END_NAMESPACE
248

source code of qtcoap/src/coap/qcoapresource.cpp