Skip to content

Commit ca1137e

Browse files
committed
config
1 parent 161e456 commit ca1137e

16 files changed

+82
-71
lines changed

include/signalrclient/hub_connection.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ namespace signalr
5555

5656
explicit hub_connection(const std::string& url, trace_level trace_level = trace_level::all,
5757
std::shared_ptr<log_writer> log_writer = nullptr, std::shared_ptr<http_client> http_client = nullptr,
58-
std::function<std::shared_ptr<websocket_client>()> websocket_factory = nullptr);
58+
std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> websocket_factory = nullptr);
5959

6060
std::shared_ptr<hub_connection_impl> m_pImpl;
6161
};

include/signalrclient/hub_connection_builder.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ namespace signalr
2828

2929
SIGNALRCLIENT_API hub_connection_builder& with_logging(std::shared_ptr<log_writer> logger, trace_level logLevel);
3030

31-
SIGNALRCLIENT_API hub_connection_builder& with_websocket_factory(std::function<std::shared_ptr<websocket_client>()> factory);
31+
SIGNALRCLIENT_API hub_connection_builder& with_websocket_factory(std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> factory);
3232

3333
SIGNALRCLIENT_API hub_connection_builder& with_http_client(std::shared_ptr<http_client> http_client);
3434

@@ -39,7 +39,7 @@ namespace signalr
3939
std::string m_url;
4040
std::shared_ptr<log_writer> m_logger;
4141
trace_level m_log_level;
42-
std::function<std::shared_ptr<websocket_client>()> m_websocket_factory;
42+
std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> m_websocket_factory;
4343
std::shared_ptr<http_client> m_http_client;
4444
};
4545
}

src/signalrclient/connection_impl.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ namespace signalr
3333
}
3434

3535
std::shared_ptr<connection_impl> connection_impl::create(const std::string& url, trace_level trace_level, const std::shared_ptr<log_writer>& log_writer,
36-
std::shared_ptr<http_client> http_client, std::function<std::shared_ptr<websocket_client>()> websocket_factory)
36+
std::shared_ptr<http_client> http_client, std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> websocket_factory)
3737
{
3838
return std::shared_ptr<connection_impl>(new connection_impl(url, trace_level,
3939
log_writer ? log_writer : std::make_shared<trace_log_writer>(), http_client, websocket_factory));
@@ -57,7 +57,7 @@ namespace signalr
5757
}
5858

5959
connection_impl::connection_impl(const std::string& url, trace_level trace_level, const std::shared_ptr<log_writer>& log_writer,
60-
std::shared_ptr<http_client> http_client, std::function<std::shared_ptr<websocket_client>()> websocket_factory)
60+
std::shared_ptr<http_client> http_client, std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> websocket_factory)
6161
: m_base_url(url), m_connection_state(connection_state::disconnected), m_logger(log_writer, trace_level), m_transport(nullptr),
6262
m_message_received([](const std::string&) noexcept {}), m_disconnected([]() noexcept {})
6363
{
@@ -75,7 +75,7 @@ namespace signalr
7575
if (websocket_factory == nullptr)
7676
{
7777
#ifdef USE_CPPRESTSDK
78-
websocket_factory = []() { return std::make_shared<default_websocket_client>(); };
78+
websocket_factory = [](const signalr_client_config& signalr_client_config) { return std::make_shared<default_websocket_client>(signalr_client_config); };
7979
#endif
8080
}
8181

src/signalrclient/connection_impl.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace signalr
2929
static std::shared_ptr<connection_impl> create(const std::string& url, trace_level trace_level, const std::shared_ptr<log_writer>& log_writer);
3030

3131
static std::shared_ptr<connection_impl> create(const std::string& url, trace_level trace_level, const std::shared_ptr<log_writer>& log_writer,
32-
std::shared_ptr<http_client> http_client, std::function<std::shared_ptr<websocket_client>()> websocket_factory);
32+
std::shared_ptr<http_client> http_client, std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> websocket_factory);
3333

3434
connection_impl(const connection_impl&) = delete;
3535

@@ -70,7 +70,7 @@ namespace signalr
7070
std::unique_ptr<http_client> http_client, std::unique_ptr<transport_factory> transport_factory);
7171

7272
connection_impl(const std::string& url, trace_level trace_level, const std::shared_ptr<log_writer>& log_writer,
73-
std::shared_ptr<http_client> http_client, std::function<std::shared_ptr<websocket_client>()> websocket_factory);
73+
std::shared_ptr<http_client> http_client, std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> websocket_factory);
7474

7575
void start_transport(const std::string& url, std::function<void(std::shared_ptr<transport>, std::exception_ptr)> callback);
7676
void send_connect_request(const std::shared_ptr<transport>& transport,

src/signalrclient/default_websocket_client.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ namespace signalr
1313
static web::websockets::client::websocket_client_config create_client_config(const signalr_client_config& signalr_client_config) noexcept
1414
{
1515
auto websocket_client_config = signalr_client_config.get_websocket_client_config();
16-
websocket_client_config.headers() = signalr_client_config.get_http_headers();
16+
auto websocket_headers = websocket_client_config.headers();
17+
for (auto& header : signalr_client_config.get_http_headers())
18+
{
19+
websocket_headers.add(utility::conversions::to_string_t(header.first), utility::conversions::to_string_t(header.second));
20+
}
1721

1822
return websocket_client_config;
1923
}

src/signalrclient/hub_connection.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace signalr
1212
{
1313
hub_connection::hub_connection(const std::string& url,
1414
trace_level trace_level, std::shared_ptr<log_writer> log_writer, std::shared_ptr<http_client> http_client,
15-
std::function<std::shared_ptr<websocket_client>()> websocket_factory)
15+
std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> websocket_factory)
1616
: m_pImpl(hub_connection_impl::create(url, trace_level, log_writer, http_client, websocket_factory))
1717
{}
1818

src/signalrclient/hub_connection_builder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ namespace signalr
5656
return *this;
5757
}
5858

59-
hub_connection_builder& hub_connection_builder::with_websocket_factory(std::function<std::shared_ptr<websocket_client>()> factory)
59+
hub_connection_builder& hub_connection_builder::with_websocket_factory(std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> factory)
6060
{
6161
m_websocket_factory = factory;
6262

src/signalrclient/hub_connection_impl.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace signalr
2424

2525
std::shared_ptr<hub_connection_impl> hub_connection_impl::create(const std::string& url, trace_level trace_level,
2626
const std::shared_ptr<log_writer>& log_writer, std::shared_ptr<http_client> http_client,
27-
std::function<std::shared_ptr<websocket_client>()> websocket_factory)
27+
std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> websocket_factory)
2828
{
2929
auto connection = std::shared_ptr<hub_connection_impl>(new hub_connection_impl(url, trace_level, log_writer, http_client, websocket_factory));
3030

@@ -35,7 +35,7 @@ namespace signalr
3535

3636
hub_connection_impl::hub_connection_impl(const std::string& url, trace_level trace_level,
3737
const std::shared_ptr<log_writer>& log_writer, std::shared_ptr<http_client> http_client,
38-
std::function<std::shared_ptr<websocket_client>()> websocket_factory)
38+
std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> websocket_factory)
3939
: m_connection(connection_impl::create(url, trace_level, log_writer,
4040
http_client, websocket_factory)), m_logger(log_writer, trace_level),
4141
m_callback_manager(signalr::value(std::map<std::string, signalr::value> { { std::string("error"), std::string("connection went out of scope before invocation result was received") } })),

src/signalrclient/hub_connection_impl.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ namespace signalr
2525
public:
2626
static std::shared_ptr<hub_connection_impl> create(const std::string& url, trace_level trace_level,
2727
const std::shared_ptr<log_writer>& log_writer, std::shared_ptr<http_client> http_client,
28-
std::function<std::shared_ptr<websocket_client>()> websocket_factory);
28+
std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> websocket_factory);
2929

3030
hub_connection_impl(const hub_connection_impl&) = delete;
3131
hub_connection_impl& operator=(const hub_connection_impl&) = delete;
@@ -47,7 +47,7 @@ namespace signalr
4747
private:
4848
hub_connection_impl(const std::string& url, trace_level trace_level,
4949
const std::shared_ptr<log_writer>& log_writer, std::shared_ptr<http_client> http_client,
50-
std::function<std::shared_ptr<websocket_client>()> websocket_factory);
50+
std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> websocket_factory);
5151

5252
std::shared_ptr<connection_impl> m_connection;
5353
logger m_logger;

src/signalrclient/transport_factory.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,16 @@
99

1010
namespace signalr
1111
{
12-
transport_factory::transport_factory(std::shared_ptr<http_client> http_client, std::function<std::shared_ptr<websocket_client>()> websocket_factory)
12+
transport_factory::transport_factory(std::shared_ptr<http_client> http_client, std::function<std::shared_ptr<websocket_client>(const signalr_client_config&)> websocket_factory)
1313
: m_http_client(http_client), m_websocket_factory(websocket_factory)
1414
{}
1515

1616
std::shared_ptr<transport> transport_factory::create_transport(transport_type transport_type, const logger& logger,
1717
const signalr_client_config& signalr_client_config)
1818
{
19-
// TODO: Handle config with transport(s)
2019
if (transport_type == signalr::transport_type::websockets)
2120
{
22-
return websocket_transport::create(m_websocket_factory,
21+
return websocket_transport::create(m_websocket_factory, signalr_client_config,
2322
logger);
2423
}
2524

0 commit comments

Comments
 (0)