Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert the rest of the reason codes, and the control packet types into enums. #415

Merged
merged 5 commits into from
Sep 11, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions example/v5_no_tls_both.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,18 +65,18 @@ void client_proc(
});
c->set_v5_pubrec_handler( // use v5 handler
[&]
(packet_id_t packet_id, std::uint8_t reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
(packet_id_t packet_id, MQTT_NS::v5::pubrec_reason_code reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
std::cout <<
"[client] pubrec received. packet_id: " << packet_id <<
" reason_code: " << static_cast<int>(reason_code) << std::endl;
" reason_code: " << reason_code << std::endl;
return true;
});
c->set_v5_pubcomp_handler( // use v5 handler
[&]
(packet_id_t packet_id, std::uint8_t reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
(packet_id_t packet_id, MQTT_NS::v5::pubcomp_reason_code reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
std::cout <<
"[client] pubcomp received. packet_id: " << packet_id <<
" reason_code: " << static_cast<int>(reason_code) << std::endl;
" reason_code: " << reason_code << std::endl;
disconnect();
return true;
});
Expand Down Expand Up @@ -251,26 +251,26 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
});
ep.set_v5_pubrec_handler( // use v5 handler
[&]
(packet_id_t packet_id, std::uint8_t reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
(packet_id_t packet_id, MQTT_NS::v5::pubrec_reason_code reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
std::cout <<
"[server] pubrec received. packet_id: " << packet_id <<
" reason_code: " << static_cast<int>(reason_code) << std::endl;
" reason_code: " << reason_code << std::endl;
return true;
});
ep.set_v5_pubrel_handler( // use v5 handler
[&]
(packet_id_t packet_id, std::uint8_t reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
(packet_id_t packet_id, MQTT_NS::v5::pubrel_reason_code reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
std::cout <<
"[server] pubrel received. packet_id: " << packet_id <<
" reason_code: " << static_cast<int>(reason_code) << std::endl;
" reason_code: " << reason_code << std::endl;
return true;
});
ep.set_v5_pubcomp_handler( // use v5 handler
[&]
(packet_id_t packet_id, std::uint8_t reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
(packet_id_t packet_id, MQTT_NS::v5::pubcomp_reason_code reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
std::cout <<
"[server] pubcomp received. packet_id: " << packet_id <<
" reason_code: " << static_cast<int>(reason_code) << std::endl;
" reason_code: " << reason_code << std::endl;
return true;
});
ep.set_v5_publish_handler( // use v5 handler
Expand Down
8 changes: 4 additions & 4 deletions example/v5_no_tls_client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,18 +74,18 @@ int main(int argc, char** argv) {
});
c->set_v5_pubrec_handler( // use v5 handler
[&]
(packet_id_t packet_id, std::uint8_t reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
(packet_id_t packet_id, MQTT_NS::v5::pubrec_reason_code reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
std::cout <<
"[client] pubrec received. packet_id: " << packet_id <<
" reason_code: " << static_cast<int>(reason_code) << std::endl;
" reason_code: " << reason_code << std::endl;
return true;
});
c->set_v5_pubcomp_handler( // use v5 handler
[&]
(packet_id_t packet_id, std::uint8_t reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
(packet_id_t packet_id, MQTT_NS::v5::pubcomp_reason_code reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
std::cout <<
"[client] pubcomp received. packet_id: " << packet_id <<
" reason_code: " << static_cast<int>(reason_code) << std::endl;
" reason_code: " << reason_code << std::endl;
disconnect();
return true;
});
Expand Down
12 changes: 6 additions & 6 deletions example/v5_no_tls_server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,26 +144,26 @@ int main(int argc, char** argv) {
});
ep.set_v5_pubrec_handler( // use v5 handler
[&]
(packet_id_t packet_id, std::uint8_t reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
(packet_id_t packet_id, MQTT_NS::v5::pubrec_reason_code reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
std::cout <<
"[server]pubrec received. packet_id: " << packet_id <<
" reason_code: " << static_cast<int>(reason_code) << std::endl;
" reason_code: " << reason_code << std::endl;
return true;
});
ep.set_v5_pubrel_handler( // use v5 handler
[&]
(packet_id_t packet_id, std::uint8_t reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
(packet_id_t packet_id, MQTT_NS::v5::pubrel_reason_code reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
std::cout <<
"[server]pubrel received. packet_id: " << packet_id <<
" reason_code: " << static_cast<int>(reason_code) << std::endl;
" reason_code: " << reason_code << std::endl;
return true;
});
ep.set_v5_pubcomp_handler( // use v5 handler
[&]
(packet_id_t packet_id, std::uint8_t reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
(packet_id_t packet_id, MQTT_NS::v5::pubcomp_reason_code reason_code, std::vector<MQTT_NS::v5::property_variant> /*props*/){
std::cout <<
"[server]pubcomp received. packet_id: " << packet_id <<
" reason_code: " << static_cast<int>(reason_code) << std::endl;
" reason_code: " << reason_code << std::endl;
return true;
});
ep.set_v5_publish_handler( // use v5 handler
Expand Down
75 changes: 52 additions & 23 deletions include/mqtt/control_packet_type.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,58 @@

namespace MQTT_NS {

namespace control_packet_type {
// reserved = 0,
constexpr std::uint8_t const connect = 1;
constexpr std::uint8_t const connack = 2;
constexpr std::uint8_t const publish = 3;
constexpr std::uint8_t const puback = 4;
constexpr std::uint8_t const pubrec = 5;
constexpr std::uint8_t const pubrel = 6;
constexpr std::uint8_t const pubcomp = 7;
constexpr std::uint8_t const subscribe = 8;
constexpr std::uint8_t const suback = 9;
constexpr std::uint8_t const unsubscribe = 10;
constexpr std::uint8_t const unsuback = 11;
constexpr std::uint8_t const pingreq = 12;
constexpr std::uint8_t const pingresp = 13;
constexpr std::uint8_t const disconnect = 14;
constexpr std::uint8_t const auth = 15;

} // namespace control_packet_type

inline
constexpr std::uint8_t get_control_packet_type(std::uint8_t v) {
return static_cast<std::uint8_t>(v >> 4);
enum class control_packet_type : std::uint8_t {

// reserved = 0b0000000,
connect = 0b00010000, // 1
connack = 0b00100000, // 2
publish = 0b00110000, // 3
puback = 0b01000000, // 4
pubrec = 0b01010000, // 5
pubrel = 0b01100000, // 6
pubcomp = 0b01110000, // 7
subscribe = 0b10000000, // 8
suback = 0b10010000, // 9
unsubscribe = 0b10100000, // 10
unsuback = 0b10110000, // 11
pingreq = 0b11000000, // 12
pingresp = 0b11010000, // 13
disconnect = 0b11100000, // 14
auth = 0b11110000, // 15

}; // namespace control_packet_type

constexpr control_packet_type get_control_packet_type(std::uint8_t v) {
return static_cast<control_packet_type>(v & 0b11110000);
}

constexpr
char const* control_packet_type_to_str(control_packet_type v) {
switch(v)
{
// case control_packet_type::reserved: return "reserved";
case control_packet_type::connect: return "connect";
case control_packet_type::connack: return "connack";
case control_packet_type::publish: return "publish";
case control_packet_type::puback: return "puback";
case control_packet_type::pubrec: return "pubrec";
case control_packet_type::pubrel: return "pubrel";
case control_packet_type::pubcomp: return "pubcomp";
case control_packet_type::subscribe: return "subscribe";
case control_packet_type::suback: return "suback";
case control_packet_type::pingreq: return "pingreq";
case control_packet_type::pingresp: return "pingresp";
case control_packet_type::disconnect: return "disconnect";
case control_packet_type::auth: return "auth";
default: return "unknown_control_packet_type";
}
}

template<typename Stream>
Stream & operator<<(Stream & os, control_packet_type val)
{
os << control_packet_type_to_str(val);
return os;
}

} // namespace MQTT_NS
Expand Down
Loading