diff --git a/src/internal/sio_client_impl.cpp b/src/internal/sio_client_impl.cpp index 3cd98da8..91dad3d6 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_context != nullptr) { + m_client.init_asio(options.io_context); + } 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..1cdb7f7c 100644 --- a/src/sio_client.cpp +++ b/src/sio_client.cpp @@ -12,8 +12,10 @@ using std::stringstream; namespace sio { - client::client(): - m_impl(new client_impl()) + 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..a8cbb9fe 100644 --- a/src/sio_client.h +++ b/src/sio_client.h @@ -11,9 +11,17 @@ #include "sio_message.h" #include "sio_socket.h" +namespace asio { + class io_context; +} + namespace sio { class client_impl; + + struct client_options { + asio::io_context* io_context = nullptr; + }; class client { public: @@ -32,6 +40,7 @@ namespace sio typedef std::function socket_listener; client(); + client(client_options const& options); ~client(); //set listeners and event bindings.