Declaration changes meaning fix

Summary: resolves T13222

Reviewers: ivica

Reviewed By: ivica

Subscribers: miljen, iljazovic

Maniphest Tasks: T13222

Differential Revision: https://repo.mireo.local/D26828
This commit is contained in:
Korina Šimičević
2023-12-04 15:31:17 +01:00
parent 680df91ee0
commit 35b190ef67
8 changed files with 29 additions and 34 deletions

View File

@@ -107,6 +107,7 @@ Async.MQTT5 is a header-only library. To use Async.MQTT5 it requires the followi
Async.MQTT5 has been tested with the following compilers:
- clang 14.0 (Linux)
- GCC 12 (Linux)
- MSVC 14.37 - Visual Studio 2022 (Windows)
Contributing

View File

@@ -66,16 +66,16 @@ private:
}
};
struct mqtt_context {
credentials credentials;
std::optional<will> will;
struct mqtt_ctx {
credentials creds;
std::optional<will> will_msg;
connect_props co_props;
connack_props ca_props;
session_state session_state;
session_state state;
any_authenticator authenticator;
};
struct disconnect_context {
struct disconnect_ctx {
disconnect_rc_e reason_code = disconnect_rc_e::normal_disconnection;
disconnect_props props = {};
bool terminal = false;

View File

@@ -25,31 +25,31 @@ requires has_tls_layer<StreamType>
class stream_context<StreamType, TlsContext> {
using tls_context_type = TlsContext;
mqtt_context _mqtt_context;
mqtt_ctx _mqtt_context;
tls_context_type _tls_context;
public:
explicit stream_context(TlsContext tls_context) :
_tls_context(std::move(tls_context))
{}
mqtt_context& mqtt_context() {
auto& mqtt_context() {
return _mqtt_context;
}
TlsContext& tls_context() {
auto& tls_context() {
return _tls_context;
}
auto& session_state() {
return _mqtt_context.session_state;
return _mqtt_context.state;
}
const auto& session_state() const {
return _mqtt_context.session_state;
return _mqtt_context.state;
}
void will(will will) {
_mqtt_context.will = std::move(will);
_mqtt_context.will_msg = std::move(will);
}
template <typename Prop>
@@ -61,7 +61,7 @@ public:
std::string client_id,
std::string username = "", std::string password = ""
) {
_mqtt_context.credentials = {
_mqtt_context.creds = {
std::move(client_id),
std::move(username), std::move(password)
};
@@ -78,24 +78,24 @@ public:
template <typename StreamType>
requires (!has_tls_layer<StreamType>)
class stream_context<StreamType, std::monostate> {
mqtt_context _mqtt_context;
mqtt_ctx _mqtt_context;
public:
explicit stream_context(std::monostate) {}
mqtt_context& mqtt_context() {
auto& mqtt_context() {
return _mqtt_context;
}
auto& session_state() {
return _mqtt_context.session_state;
return _mqtt_context.state;
}
const auto& session_state() const {
return _mqtt_context.session_state;
return _mqtt_context.state;
}
void will(will will) {
_mqtt_context.will = std::move(will);
_mqtt_context.will_msg = std::move(will);
}
template <typename Prop>
@@ -107,7 +107,7 @@ public:
std::string client_id,
std::string username = "", std::string password = ""
) {
_mqtt_context.credentials = {
_mqtt_context.creds = {
std::move(client_id),
std::move(username), std::move(password)
};

View File

@@ -39,7 +39,7 @@ class connect_op {
struct on_complete_auth {};
Stream& _stream;
mqtt_context& _ctx;
mqtt_ctx& _ctx;
using handler_type = asio::any_completion_handler<void (error_code)>;
handler_type _handler;
@@ -52,7 +52,7 @@ class connect_op {
public:
template <typename Handler>
connect_op(
Stream& stream, Handler&& handler, mqtt_context& ctx
Stream& stream, Handler&& handler, mqtt_ctx& ctx
) :
_stream(stream), _ctx(ctx),
_handler(std::forward<Handler>(handler))
@@ -190,9 +190,9 @@ public:
auto packet = control_packet<allocator_type>::of(
no_pid, get_allocator(),
encoders::encode_connect,
_ctx.credentials.client_id,
_ctx.credentials.username, _ctx.credentials.password,
10u, false, _ctx.co_props, _ctx.will
_ctx.creds.client_id,
_ctx.creds.username, _ctx.creds.password,
10u, false, _ctx.co_props, _ctx.will_msg
);
const auto& wire_data = packet.wire_data();
@@ -283,7 +283,7 @@ public:
const auto& [session_present, reason_code, ca_props] = *rv;
_ctx.ca_props = ca_props;
_ctx.session_state.session_present(session_present);
_ctx.state.session_present(session_present);
// TODO: session_present logic
// Unexpected result handling:

View File

@@ -122,7 +122,7 @@ decltype(auto) async_disconnect(
using Signature = void (error_code);
auto initiation = [](
auto handler, disconnect_context ctx,
auto handler, disconnect_ctx ctx,
const std::shared_ptr<ClientService>& svc_ptr
) {
disconnect_op {
@@ -132,7 +132,7 @@ decltype(auto) async_disconnect(
return asio::async_initiate<CompletionToken, Signature>(
initiation, token,
disconnect_context { reason_code, props, terminal },
disconnect_ctx { reason_code, props, terminal },
svc_ptr
);
}

View File

@@ -126,7 +126,7 @@ public:
auto init_connect = [](
auto handler, typename Owner::stream_type& stream,
mqtt_context& context, const epoints& eps, authority_path ap
mqtt_ctx& context, const epoints& eps, authority_path ap
) {
connect_op { stream, std::move(handler), context }
.perform(eps, std::move(ap));

View File

@@ -91,7 +91,7 @@ class properties {
template <property_type p>
struct property {
using key = std::integral_constant<uint8_t, p>;
using key = std::integral_constant<property_type, p>;
constexpr static std::string_view name = name_v<p>;
value_type_t<p> value;
};

View File

@@ -1,16 +1,10 @@
#include <boost/test/unit_test.hpp>
#include <boost/asio/as_tuple.hpp>
#include <boost/asio/co_spawn.hpp>
#include <boost/asio/use_awaitable.hpp>
#include <async_mqtt5.hpp>
#include <test_common/test_service.hpp>
using namespace async_mqtt5;
constexpr auto use_nothrow_awaitable = asio::as_tuple(asio::use_awaitable);
BOOST_AUTO_TEST_SUITE(session/*, *boost::unit_test::disabled()*/)
BOOST_AUTO_TEST_CASE(session_state_session_present) {