1515#include " make_unique.h"
1616#include " completion_event.h"
1717#include < assert.h>
18+ #include " signalrclient/websocket_client.h"
19+ #include " default_websocket_client.h"
1820
1921namespace signalr
2022{
@@ -27,14 +29,14 @@ namespace signalr
2729
2830 std::shared_ptr<connection_impl> connection_impl::create (const std::string& url, trace_level trace_level, const std::shared_ptr<log_writer>& log_writer)
2931 {
30- return connection_impl::create (url, trace_level, log_writer, nullptr , std::make_unique<transport_factory>() );
32+ return connection_impl::create (url, trace_level, log_writer, nullptr , nullptr );
3133 }
3234
3335 std::shared_ptr<connection_impl> connection_impl::create (const std::string& url, trace_level trace_level, const std::shared_ptr<log_writer>& log_writer,
34- std::unique_ptr <http_client> http_client, std::unique_ptr<transport_factory> transport_factory )
36+ std::shared_ptr <http_client> http_client, std::function<std::shared_ptr<websocket_client>()> websocket_factory )
3537 {
3638 return std::shared_ptr<connection_impl>(new connection_impl (url, trace_level,
37- log_writer ? log_writer : std::make_shared<trace_log_writer>(), std::move ( http_client), std::move (transport_factory) ));
39+ log_writer ? log_writer : std::make_shared<trace_log_writer>(), http_client, websocket_factory ));
3840 }
3941
4042 connection_impl::connection_impl (const std::string& url, trace_level trace_level, const std::shared_ptr<log_writer>& log_writer,
@@ -52,6 +54,32 @@ namespace signalr
5254 }
5355 }
5456
57+ connection_impl::connection_impl (const std::string& url, trace_level trace_level, const std::shared_ptr<log_writer>& log_writer,
58+ std::shared_ptr<http_client> http_client, std::function<std::shared_ptr<websocket_client>()> websocket_factory)
59+ : m_base_http://github.com/url(url), m_connection_state(connection_state::disconnected), m_logger(log_writer, trace_level), m_transport(nullptr ),
60+ m_message_received ([](const std::string&) noexcept {}), m_disconnected([]() noexcept {})
61+ {
62+ if (http_client != nullptr )
63+ {
64+ m_http_client = std::move (http_client);
65+ }
66+ else
67+ {
68+ #ifdef USE_CPPRESTSDK
69+ m_http_client = std::unique_ptr<class http_client >(new default_http_client ());
70+ #endif
71+ }
72+
73+ if (websocket_factory == nullptr )
74+ {
75+ #ifdef USE_CPPRESTSDK
76+ websocket_factory = []() { return std::make_shared<default_websocket_client>(); };
77+ #endif
78+ }
79+
80+ m_transport_factory = std::unique_ptr<transport_factory>(new transport_factory (m_http_client, websocket_factory));
81+ }
82+
5583 connection_impl::~connection_impl ()
5684 {
5785 try
0 commit comments