12
12
#include " log_writer.h"
13
13
#include " signalr_client_config.h"
14
14
#include " signalr_value.h"
15
+ #include " converters.h"
15
16
16
17
namespace signalr
17
18
{
@@ -21,6 +22,24 @@ namespace signalr
21
22
class hub_connection_builder ;
22
23
class hub_protocol ;
23
24
25
+ /* template <typename T, int = 0>
26
+ T convert_value(const signalr::value& value);*/
27
+
28
+ /* template <typename T, std::enable_if_t<!is_map<std::enable_if_t<!is_vector<T>::value, T>>::value, int> = 0>
29
+ T convert_value(const signalr::value& value);
30
+
31
+ template <>
32
+ int convert_value<int>(const signalr::value& value);
33
+
34
+ template <>
35
+ std::string convert_value<std::string>(const signalr::value& value);
36
+
37
+ template <typename T>
38
+ typename std::enable_if_t<is_map<T>::value, T> convert_value(const signalr::value& value);
39
+
40
+ template <typename T>
41
+ typename std::enable_if_t<is_vector<T>::value, T> convert_value(const signalr::value& value);*/
42
+
24
43
class hub_connection
25
44
{
26
45
public:
@@ -48,6 +67,18 @@ namespace signalr
48
67
49
68
SIGNALRCLIENT_API void __cdecl on (const std::string& event_name, const method_invoked_handler& handler);
50
69
70
+ template <typename T>
71
+ SIGNALRCLIENT_API void on (const std::string& event_name, std::function<void (T)> handler)
72
+ {
73
+ return on (event_name, [handler](const std::vector<signalr::value>& args)
74
+ {
75
+ handler (convert_value<T>(args[0 ]));
76
+ });
77
+ }
78
+
79
+ /* template <typename T>
80
+ SIGNALRCLIENT_API void on(const std::string& event_name, std::function<void (T)> handler);*/
81
+
51
82
SIGNALRCLIENT_API void invoke (const std::string& method_name, const std::vector<signalr::value>& arguments = std::vector<signalr::value>(), std::function<void(const signalr::value&, std::exception_ptr)> callback = [](const signalr::value&, std::exception_ptr) {}) noexcept ;
52
83
53
84
SIGNALRCLIENT_API void send (const std::string& method_name, const std::vector<signalr::value>& arguments = std::vector<signalr::value>(), std::function<void(std::exception_ptr)> callback = [](std::exception_ptr) {}) noexcept ;
@@ -63,4 +94,4 @@ namespace signalr
63
94
64
95
std::shared_ptr<hub_connection_impl> m_pImpl;
65
96
};
66
- }
97
+ }
0 commit comments