From 1acd40770f3b4b8a6f4f3197aa1219f212a1cdc6 Mon Sep 17 00:00:00 2001 From: Michael Scofield Date: Fri, 24 Feb 2023 14:27:10 +0100 Subject: [PATCH 1/2] feat: allow for custom io_service (#390) --- src/internal/sio_client_impl.cpp | 8 ++++++-- src/internal/sio_client_impl.h | 2 +- src/sio_client.cpp | 4 ++-- src/sio_client.h | 7 ++++++- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/internal/sio_client_impl.cpp b/src/internal/sio_client_impl.cpp index 3cd98da8..625076bd 100644 --- a/src/internal/sio_client_impl.cpp +++ b/src/internal/sio_client_impl.cpp @@ -31,7 +31,7 @@ using namespace std; namespace sio { /*************************public:*************************/ - client_impl::client_impl() : + client_impl::client_impl(client_options const& options) : m_ping_interval(0), m_ping_timeout(0), m_network_thread(), @@ -47,7 +47,11 @@ namespace sio m_client.set_access_channels(alevel::connect|alevel::disconnect|alevel::app); #endif // Initialize the Asio transport policy - m_client.init_asio(); + if (options.io_service != nullptr) { + m_client.init_asio(options.io_service); + } else { + m_client.init_asio(); + } // Bind the clients we are using using std::placeholders::_1; diff --git a/src/internal/sio_client_impl.h b/src/internal/sio_client_impl.h index 3cd82a0d..f4f02aa5 100644 --- a/src/internal/sio_client_impl.h +++ b/src/internal/sio_client_impl.h @@ -62,7 +62,7 @@ namespace sio con_closed }; - client_impl(); + client_impl(client_options const& options); ~client_impl(); diff --git a/src/sio_client.cpp b/src/sio_client.cpp index b3fa7765..4d43e05b 100644 --- a/src/sio_client.cpp +++ b/src/sio_client.cpp @@ -12,8 +12,8 @@ using std::stringstream; namespace sio { - client::client(): - m_impl(new client_impl()) + client::client(client_options const& options): + m_impl(new client_impl(options)) { } diff --git a/src/sio_client.h b/src/sio_client.h index 821164aa..0c6527b8 100644 --- a/src/sio_client.h +++ b/src/sio_client.h @@ -8,12 +8,17 @@ #define SIO_CLIENT_H #include #include +#include #include "sio_message.h" #include "sio_socket.h" namespace sio { class client_impl; + + struct client_options { + asio::io_service* io_service = nullptr; + }; class client { public: @@ -31,7 +36,7 @@ namespace sio typedef std::function socket_listener; - client(); + client(client_options const& options); ~client(); //set listeners and event bindings. From 400c88436fde31dc97b71049b82190e0b3f7787c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joan=20Marc=C3=A8=20i=20Igual?= Date: Mon, 26 Jun 2023 12:20:35 +0200 Subject: [PATCH 2/2] Keep default constructor --- src/internal/sio_client_impl.cpp | 4 ++-- src/sio_client.cpp | 2 ++ src/sio_client.h | 8 ++++++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/internal/sio_client_impl.cpp b/src/internal/sio_client_impl.cpp index 625076bd..91dad3d6 100644 --- a/src/internal/sio_client_impl.cpp +++ b/src/internal/sio_client_impl.cpp @@ -47,8 +47,8 @@ namespace sio m_client.set_access_channels(alevel::connect|alevel::disconnect|alevel::app); #endif // Initialize the Asio transport policy - if (options.io_service != nullptr) { - m_client.init_asio(options.io_service); + if (options.io_context != nullptr) { + m_client.init_asio(options.io_context); } else { m_client.init_asio(); } diff --git a/src/sio_client.cpp b/src/sio_client.cpp index 4d43e05b..1cdb7f7c 100644 --- a/src/sio_client.cpp +++ b/src/sio_client.cpp @@ -12,6 +12,8 @@ using std::stringstream; namespace sio { + client::client() : m_impl(new client_impl({})) {} + client::client(client_options const& options): m_impl(new client_impl(options)) { diff --git a/src/sio_client.h b/src/sio_client.h index 0c6527b8..a8cbb9fe 100644 --- a/src/sio_client.h +++ b/src/sio_client.h @@ -8,16 +8,19 @@ #define SIO_CLIENT_H #include #include -#include #include "sio_message.h" #include "sio_socket.h" +namespace asio { + class io_context; +} + namespace sio { class client_impl; struct client_options { - asio::io_service* io_service = nullptr; + asio::io_context* io_context = nullptr; }; class client { @@ -36,6 +39,7 @@ namespace sio typedef std::function socket_listener; + client(); client(client_options const& options); ~client();