Skip to content

Commit

Permalink
Merge pull request #259 from redboltz/add_v5_example_2
Browse files Browse the repository at this point in the history
Added MQTT v5 examples.
  • Loading branch information
redboltz authored May 20, 2019
2 parents 081f434 + 0e013d3 commit 773ade4
Show file tree
Hide file tree
Showing 8 changed files with 1,126 additions and 63 deletions.
4 changes: 4 additions & 0 deletions example/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ LIST (APPEND exec_PROGRAMS
no_tls_client.cpp
no_tls_server.cpp
no_tls_both.cpp
v5_no_tls_client.cpp
v5_no_tls_server.cpp
v5_no_tls_both.cpp
v5_no_tls_prop.cpp
broker.cpp
)

Expand Down
42 changes: 21 additions & 21 deletions example/no_tls_both.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,12 +168,12 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
s.set_accept_handler(
[&](con_t& ep) {
using packet_id_t = typename std::remove_reference_t<decltype(ep)>::packet_id_t;
std::cout << "[server]accept" << std::endl;
std::cout << "[server] accept" << std::endl;
auto sp = ep.shared_from_this();
ep.start_session(
[&, sp] // keeping ep's lifetime as sp until session finished
(boost::system::error_code const& ec) {
std::cout << "[server]session end: " << ec.message() << std::endl;
std::cout << "[server] session end: " << ec.message() << std::endl;
s.close();
}
);
Expand All @@ -182,13 +182,13 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
ep.set_close_handler(
[&]
(){
std::cout << "[server]closed." << std::endl;
std::cout << "[server] closed." << std::endl;
close_proc(connections, subs, ep.shared_from_this());
});
ep.set_error_handler(
[&]
(boost::system::error_code const& ec){
std::cout << "[server]error: " << ec.message() << std::endl;
std::cout << "[server] error: " << ec.message() << std::endl;
close_proc(connections, subs, ep.shared_from_this());
});

Expand All @@ -201,11 +201,11 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
mqtt::optional<mqtt::will>,
bool clean_session,
std::uint16_t keep_alive) {
std::cout << "[server]client_id : " << client_id << std::endl;
std::cout << "[server]username : " << (username ? username.value() : "none") << std::endl;
std::cout << "[server]password : " << (password ? password.value() : "none") << std::endl;
std::cout << "[server]clean_session: " << std::boolalpha << clean_session << std::endl;
std::cout << "[server]keep_alive : " << keep_alive << std::endl;
std::cout << "[server] client_id : " << client_id << std::endl;
std::cout << "[server] username : " << (username ? username.value() : "none") << std::endl;
std::cout << "[server] password : " << (password ? password.value() : "none") << std::endl;
std::cout << "[server] clean_session: " << std::boolalpha << clean_session << std::endl;
std::cout << "[server] keep_alive : " << keep_alive << std::endl;
connections.insert(ep.shared_from_this());
ep.connack(false, mqtt::connect_return_code::accepted);
return true;
Expand All @@ -214,31 +214,31 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
ep.set_disconnect_handler(
[&]
(){
std::cout << "[server]disconnect received." << std::endl;
std::cout << "[server] disconnect received." << std::endl;
close_proc(connections, subs, ep.shared_from_this());
});
ep.set_puback_handler(
[&]
(packet_id_t packet_id){
std::cout << "[server]puback received. packet_id: " << packet_id << std::endl;
std::cout << "[server] puback received. packet_id: " << packet_id << std::endl;
return true;
});
ep.set_pubrec_handler(
[&]
(packet_id_t packet_id){
std::cout << "[server]pubrec received. packet_id: " << packet_id << std::endl;
std::cout << "[server] pubrec received. packet_id: " << packet_id << std::endl;
return true;
});
ep.set_pubrel_handler(
[&]
(packet_id_t packet_id){
std::cout << "[server]pubrel received. packet_id: " << packet_id << std::endl;
std::cout << "[server] pubrel received. packet_id: " << packet_id << std::endl;
return true;
});
ep.set_pubcomp_handler(
[&]
(packet_id_t packet_id){
std::cout << "[server]pubcomp received. packet_id: " << packet_id << std::endl;
std::cout << "[server] pubcomp received. packet_id: " << packet_id << std::endl;
return true;
});
ep.set_publish_handler(
Expand All @@ -249,14 +249,14 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
std::string contents){
std::uint8_t qos = mqtt::publish::get_qos(header);
bool retain = mqtt::publish::is_retain(header);
std::cout << "[server]publish received."
std::cout << "[server] publish received."
<< " dup: " << std::boolalpha << mqtt::publish::is_dup(header)
<< " qos: " << mqtt::qos::to_str(qos)
<< " retain: " << retain << std::endl;
if (packet_id)
std::cout << "[server]packet_id: " << *packet_id << std::endl;
std::cout << "[server]topic_name: " << topic_name << std::endl;
std::cout << "[server]contents: " << contents << std::endl;
std::cout << "[server] packet_id: " << *packet_id << std::endl;
std::cout << "[server] topic_name: " << topic_name << std::endl;
std::cout << "[server] contents: " << contents << std::endl;
auto const& idx = subs.get<tag_topic>();
auto r = idx.equal_range(topic_name);
for (; r.first != r.second; ++r.first) {
Expand All @@ -273,13 +273,13 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
[&]
(packet_id_t packet_id,
std::vector<std::tuple<std::string, std::uint8_t>> entries) {
std::cout << "[server]subscribe received. packet_id: " << packet_id << std::endl;
std::cout << "[server] subscribe received. packet_id: " << packet_id << std::endl;
std::vector<std::uint8_t> res;
res.reserve(entries.size());
for (auto const& e : entries) {
std::string const& topic = std::get<0>(e);
std::uint8_t qos = std::get<1>(e);
std::cout << "[server]topic: " << topic << " qos: " << static_cast<int>(qos) << std::endl;
std::cout << "[server] topic: " << topic << " qos: " << static_cast<int>(qos) << std::endl;
res.emplace_back(qos);
subs.emplace(topic, ep.shared_from_this(), qos);
}
Expand All @@ -291,7 +291,7 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
[&]
(packet_id_t packet_id,
std::vector<std::string> topics) {
std::cout << "[server]unsubscribe received. packet_id: " << packet_id << std::endl;
std::cout << "[server] unsubscribe received. packet_id: " << packet_id << std::endl;
for (auto const& topic : topics) {
subs.erase(topic);
}
Expand Down
42 changes: 21 additions & 21 deletions example/no_tls_ws_both.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,12 +168,12 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
s.set_accept_handler(
[&](con_t& ep) {
using packet_id_t = typename std::remove_reference_t<decltype(ep)>::packet_id_t;
std::cout << "[server]accept" << std::endl;
std::cout << "[server] accept" << std::endl;
auto sp = ep.shared_from_this();
ep.start_session(
[&, sp] // keeping ep's lifetime as sp until session finished
(boost::system::error_code const& ec) {
std::cout << "[server]session end: " << ec.message() << std::endl;
std::cout << "[server] session end: " << ec.message() << std::endl;
s.close();
}
);
Expand All @@ -182,13 +182,13 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
ep.set_close_handler(
[&]
(){
std::cout << "[server]closed." << std::endl;
std::cout << "[server] closed." << std::endl;
close_proc(connections, subs, ep.shared_from_this());
});
ep.set_error_handler(
[&]
(boost::system::error_code const& ec){
std::cout << "[server]error: " << ec.message() << std::endl;
std::cout << "[server] error: " << ec.message() << std::endl;
close_proc(connections, subs, ep.shared_from_this());
});

Expand All @@ -201,11 +201,11 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
mqtt::optional<mqtt::will>,
bool clean_session,
std::uint16_t keep_alive) {
std::cout << "[server]client_id : " << client_id << std::endl;
std::cout << "[server]username : " << (username ? username.value() : "none") << std::endl;
std::cout << "[server]password : " << (password ? password.value() : "none") << std::endl;
std::cout << "[server]clean_session: " << std::boolalpha << clean_session << std::endl;
std::cout << "[server]keep_alive : " << keep_alive << std::endl;
std::cout << "[server] client_id : " << client_id << std::endl;
std::cout << "[server] username : " << (username ? username.value() : "none") << std::endl;
std::cout << "[server] password : " << (password ? password.value() : "none") << std::endl;
std::cout << "[server] clean_session: " << std::boolalpha << clean_session << std::endl;
std::cout << "[server] keep_alive : " << keep_alive << std::endl;
connections.insert(ep.shared_from_this());
ep.connack(false, mqtt::connect_return_code::accepted);
return true;
Expand All @@ -214,31 +214,31 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
ep.set_disconnect_handler(
[&]
(){
std::cout << "[server]disconnect received." << std::endl;
std::cout << "[server] disconnect received." << std::endl;
close_proc(connections, subs, ep.shared_from_this());
});
ep.set_puback_handler(
[&]
(packet_id_t packet_id){
std::cout << "[server]puback received. packet_id: " << packet_id << std::endl;
std::cout << "[server] puback received. packet_id: " << packet_id << std::endl;
return true;
});
ep.set_pubrec_handler(
[&]
(packet_id_t packet_id){
std::cout << "[server]pubrec received. packet_id: " << packet_id << std::endl;
std::cout << "[server] pubrec received. packet_id: " << packet_id << std::endl;
return true;
});
ep.set_pubrel_handler(
[&]
(packet_id_t packet_id){
std::cout << "[server]pubrel received. packet_id: " << packet_id << std::endl;
std::cout << "[server] pubrel received. packet_id: " << packet_id << std::endl;
return true;
});
ep.set_pubcomp_handler(
[&]
(packet_id_t packet_id){
std::cout << "[server]pubcomp received. packet_id: " << packet_id << std::endl;
std::cout << "[server] pubcomp received. packet_id: " << packet_id << std::endl;
return true;
});
ep.set_publish_handler(
Expand All @@ -249,14 +249,14 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
std::string contents){
std::uint8_t qos = mqtt::publish::get_qos(header);
bool retain = mqtt::publish::is_retain(header);
std::cout << "[server]publish received."
std::cout << "[server] publish received."
<< " dup: " << std::boolalpha << mqtt::publish::is_dup(header)
<< " qos: " << mqtt::qos::to_str(qos)
<< " retain: " << retain << std::endl;
if (packet_id)
std::cout << "[server]packet_id: " << *packet_id << std::endl;
std::cout << "[server]topic_name: " << topic_name << std::endl;
std::cout << "[server]contents: " << contents << std::endl;
std::cout << "[server] packet_id: " << *packet_id << std::endl;
std::cout << "[server] topic_name: " << topic_name << std::endl;
std::cout << "[server] contents: " << contents << std::endl;
auto const& idx = subs.get<tag_topic>();
auto r = idx.equal_range(topic_name);
for (; r.first != r.second; ++r.first) {
Expand All @@ -273,13 +273,13 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
[&]
(packet_id_t packet_id,
std::vector<std::tuple<std::string, std::uint8_t>> entries) {
std::cout << "[server]subscribe received. packet_id: " << packet_id << std::endl;
std::cout << "[server] subscribe received. packet_id: " << packet_id << std::endl;
std::vector<std::uint8_t> res;
res.reserve(entries.size());
for (auto const& e : entries) {
std::string const& topic = std::get<0>(e);
std::uint8_t qos = std::get<1>(e);
std::cout << "[server]topic: " << topic << " qos: " << static_cast<int>(qos) << std::endl;
std::cout << "[server] topic: " << topic << " qos: " << static_cast<int>(qos) << std::endl;
res.emplace_back(qos);
subs.emplace(topic, ep.shared_from_this(), qos);
}
Expand All @@ -291,7 +291,7 @@ void server_proc(Server& s, std::set<con_sp_t>& connections, mi_sub_con& subs) {
[&]
(packet_id_t packet_id,
std::vector<std::string> topics) {
std::cout << "[server]unsubscribe received. packet_id: " << packet_id << std::endl;
std::cout << "[server] unsubscribe received. packet_id: " << packet_id << std::endl;
for (auto const& topic : topics) {
subs.erase(topic);
}
Expand Down
Loading

0 comments on commit 773ade4

Please sign in to comment.