SNode.C
Loading...
Searching...
No Matches
TypeBase.hpp
Go to the documentation of this file.
1
/*
2
* SNode.C - A Slim Toolkit for Network Communication
3
* Copyright (C) Volker Christian <me@vchrist.at>
4
* 2020, 2021, 2022, 2023, 2024, 2025
5
*
6
* This program is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU Lesser General Public License as published
8
* by the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public License
17
* along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
/*
21
* MIT License
22
*
23
* Permission is hereby granted, free of charge, to any person obtaining a copy
24
* of this software and associated documentation files (the "Software"), to deal
25
* in the Software without restriction, including without limitation the rights
26
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
27
* copies of the Software, and to permit persons to whom the Software is
28
* furnished to do so, subject to the following conditions:
29
*
30
* The above copyright notice and this permission notice shall be included in
31
* all copies or substantial portions of the Software.
32
*
33
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
34
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
35
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
36
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
37
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
38
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
39
* THE SOFTWARE.
40
*/
41
42
#
include
"iot/mqtt/MqttContext.h"
43
#
include
"iot/mqtt/types/TypeBase.h"
44
45
#
ifndef
DOXYGEN_SHOULD_SKIP_THIS
46
47
#
endif
// DOXYGEN_SHOULD_SKIP_THIS
48
49
namespace
iot::mqtt::
types
{
50
51
template
<
typename
ValueType>
52
TypeBase
<ValueType>::
TypeBase
(std::size_t size) {
53
value
.resize(size);
54
length
= size;
55
needed
= size;
56
}
57
58
template
<
typename
ValueType>
59
std::size_t
TypeBase
<ValueType>::
deserialize
(iot::mqtt::
MqttContext
* mqttContext) {
60
std::size_t consumed = 0;
61
62
consumed = mqttContext
->
recv
(
value
.data() +
length
-
needed
,
needed
)
;
63
needed
-= consumed;
64
complete
=
needed
== 0;
65
66
return
consumed;
67
}
68
69
template
<
typename
ValueType>
70
void
TypeBase
<ValueType>::
setSize
(std::size_t size) {
71
value
.resize(size);
72
73
length
= size;
74
needed
= size;
75
}
76
77
template
<
typename
ValueTypeT>
78
std::size_t
TypeBase
<ValueTypeT>::
size
() {
79
return
length
;
80
}
81
82
template
<
typename
ValueType>
83
std::vector<
char
> iot::mqtt::
types
::
TypeBase
<ValueType>::
serialize
()
const
{
84
return
value
;
85
}
86
87
template
<
typename
ValueType>
88
bool
TypeBase
<ValueType>::
isComplete
()
const
{
89
return
complete
;
90
}
91
92
template
<
typename
ValueType>
93
void
TypeBase
<ValueType>::
reset
(std::size_t size) {
94
value
.resize(size);
95
96
length
= size;
97
needed
= size;
98
99
complete
=
false
;
100
101
state
= 0;
102
}
103
104
}
// namespace iot::mqtt::types
iot::mqtt::MqttContext
Definition
MqttContext.h:61
iot::mqtt::MqttContext::recv
virtual std::size_t recv(char *chunk, std::size_t chunklen)=0
iot::mqtt::types::BinaryData
Definition
BinaryData.h:61
iot::mqtt::types::BinaryData::valueLength
UInt16 valueLength
Definition
BinaryData.h:84
iot::mqtt::types::BinaryData::BinaryData
BinaryData(const BinaryData &)=default
iot::mqtt::types::BinaryData::operator==
bool operator==(const std::vector< char > &rhsValue) const
Definition
BinaryData.cpp:100
iot::mqtt::types::BinaryData::deserialize
std::size_t deserialize(iot::mqtt::MqttContext *mqttContext) override
Definition
BinaryData.cpp:61
iot::mqtt::types::BinaryData::~BinaryData
~BinaryData() override
Definition
BinaryData.cpp:58
iot::mqtt::types::BinaryData::BinaryData
BinaryData()
Definition
BinaryData.cpp:54
iot::mqtt::types::BinaryData::operator=
BinaryData & operator=(BinaryData &&) noexcept=default
iot::mqtt::types::BinaryData::reset
void reset(std::size_t size=0) override
Definition
BinaryData.cpp:108
iot::mqtt::types::BinaryData::operator=
BinaryData & operator=(const std::vector< char > &newValue)
Definition
BinaryData.cpp:89
iot::mqtt::types::BinaryData::operator!=
bool operator!=(const std::vector< char > &rhsValue) const
Definition
BinaryData.cpp:104
iot::mqtt::types::BinaryData::BinaryData
BinaryData(BinaryData &&) noexcept=default
iot::mqtt::types::BinaryData::serialize
std::vector< char > serialize() const override
Definition
BinaryData.cpp:82
iot::mqtt::types::BinaryData::operator=
BinaryData & operator=(const BinaryData &)=default
iot::mqtt::types::BinaryData::vector< char >
operator std::vector< char >() const
Definition
BinaryData.cpp:96
iot::mqtt::types::TypeBase
Definition
TypeBase.h:59
iot::mqtt::types::TypeBase::value
std::vector< char > value
Definition
TypeBase.h:85
iot::mqtt::types::TypeBase::setSize
void setSize(std::size_t size)
Definition
TypeBase.hpp:70
iot::mqtt::types::TypeBase::isComplete
bool isComplete() const
Definition
TypeBase.hpp:88
iot::mqtt::types::TypeBase::complete
bool complete
Definition
TypeBase.h:90
iot::mqtt::types::TypeBase::size
std::size_t size()
Definition
TypeBase.hpp:78
iot::mqtt::types::TypeBase::needed
std::size_t needed
Definition
TypeBase.h:88
iot::mqtt::types::TypeBase::serialize
virtual std::vector< char > serialize() const
Definition
TypeBase.hpp:83
iot::mqtt::types::TypeBase::deserialize
virtual std::size_t deserialize(iot::mqtt::MqttContext *mqttContext)
Definition
TypeBase.hpp:59
iot::mqtt::types::TypeBase::TypeBase
TypeBase(std::size_t size=sizeof(ValueType))
Definition
TypeBase.hpp:52
iot::mqtt::types::TypeBase::length
std::size_t length
Definition
TypeBase.h:87
iot::mqtt::types::TypeBase::state
int state
Definition
TypeBase.h:92
iot::mqtt::types::TypeBase::reset
virtual void reset(std::size_t size=sizeof(ValueType))
Definition
TypeBase.hpp:93
iot::mqtt::types::UInt16
Definition
UInt16.h:57
iot::mqtt::types::UInt16::operator=
UInt16 & operator=(const uint16_t &newValue)
Definition
UInt16.cpp:58
iot::mqtt::types
Definition
String.h:55
iot
mqtt
types
TypeBase.hpp
Generated on Wed Apr 16 2025 09:10:59 for SNode.C by
1.9.8