| line |
true |
false |
branch |
|
6
|
0 |
7 |
if (!av.size()) return; |
|
8
|
7 |
0 |
for (const auto& sv : av) { |
|
|
7 |
0 |
for (const auto& sv : av) { |
|
|
9 |
7 |
for (const auto& sv : av) { |
|
9
|
9 |
0 |
const Array subav(sv); |
|
10
|
0 |
9 |
if (!subav) continue; |
|
11
|
9 |
0 |
auto namesv = subav.fetch(0); |
|
|
9 |
0 |
auto namesv = subav.fetch(0); |
|
12
|
0 |
9 |
if (!namesv) continue; |
|
13
|
9 |
0 |
HeaderValue elem; |
|
14
|
9 |
0 |
elem.name = xs::in(namesv); |
|
|
9 |
0 |
elem.name = xs::in(namesv); |
|
15
|
9 |
0 |
Hash args = subav.fetch(1); |
|
|
9 |
0 |
Hash args = subav.fetch(1); |
|
16
|
7 |
2 |
if (args) for (const auto& row : args) elem.params.emplace(string(row.key()), xs::in(row.value())); |
|
|
7 |
0 |
if (args) for (const auto& row : args) elem.params.emplace(string(row.key()), xs::in(row.value())); |
|
|
7 |
7 |
if (args) for (const auto& row : args) elem.params.emplace(string(row.key()), xs::in(row.value())); |
|
|
7 |
0 |
if (args) for (const auto& row : args) elem.params.emplace(string(row.key()), xs::in(row.value())); |
|
|
7 |
0 |
if (args) for (const auto& row : args) elem.params.emplace(string(row.key()), xs::in(row.value())); |
|
|
7 |
0 |
if (args) for (const auto& row : args) elem.params.emplace(string(row.key()), xs::in(row.value())); |
|
|
7 |
0 |
if (args) for (const auto& row : args) elem.params.emplace(string(row.key()), xs::in(row.value())); |
|
17
|
9 |
0 |
vals->push_back(std::move(elem)); |
|
22
|
0 |
2 |
if (!vals.size()) return Array(); |
|
23
|
2 |
0 |
auto ret = Array::create(vals.size()); |
|
24
|
2 |
2 |
for (const auto& elem : vals) { |
|
25
|
2 |
0 |
auto elemav = Array::create(2); |
|
26
|
2 |
0 |
elemav.push(xs::out(elem.name)); |
|
|
2 |
0 |
elemav.push(xs::out(elem.name)); |
|
27
|
2 |
0 |
if (elem.params.size()) { |
|
28
|
2 |
0 |
auto args = Hash::create(elem.params.size()); |
|
29
|
2 |
2 |
for (const auto& param : elem.params) { |
|
30
|
2 |
0 |
args.store(param.first, xs::out(param.second)); |
|
|
2 |
0 |
args.store(param.first, xs::out(param.second)); |
|
32
|
2 |
0 |
elemav.push(Ref::create(args)); |
|
|
2 |
0 |
elemav.push(Ref::create(args)); |
|
34
|
2 |
0 |
ret.push(Ref::create(elemav)); |
|
|
2 |
0 |
ret.push(Ref::create(elemav)); |
|
40
|
23 |
0 |
for (const auto& elem : av) { |
|
|
23 |
0 |
for (const auto& elem : av) { |
|
|
1197472 |
23 |
for (const auto& elem : av) { |
|
41
|
0 |
1197472 |
if (!elem.defined()) continue; |
|
42
|
1197472 |
0 |
v.push_back(xs::in(elem)); |
|
|
1197472 |
0 |
v.push_back(xs::in(elem)); |
|
47
|
83 |
0 |
auto ret = dest ? dest : ConnectRequestSP(new ConnectRequest()); |
|
|
0 |
0 |
auto ret = dest ? dest : ConnectRequestSP(new ConnectRequest()); |
|
|
0 |
0 |
auto ret = dest ? dest : ConnectRequestSP(new ConnectRequest()); |
|
48
|
83 |
0 |
http::fill(ret, params); |
|
52
|
83 |
0 |
if ((val = params.fetch("ws_key"))) ret->ws_key = xs::in(val); |
|
|
56 |
27 |
if ((val = params.fetch("ws_key"))) ret->ws_key = xs::in(val); |
|
|
56 |
0 |
if ((val = params.fetch("ws_key"))) ret->ws_key = xs::in(val); |
|
|
56 |
0 |
if ((val = params.fetch("ws_key"))) ret->ws_key = xs::in(val); |
|
53
|
83 |
0 |
if ((val = params.fetch("ws_version"))) ret->ws_version = SvIV(val); |
|
|
4 |
79 |
if ((val = params.fetch("ws_version"))) ret->ws_version = SvIV(val); |
|
|
4 |
0 |
if ((val = params.fetch("ws_version"))) ret->ws_version = SvIV(val); |
|
|
0 |
0 |
if ((val = params.fetch("ws_version"))) ret->ws_version = SvIV(val); |
|
54
|
83 |
0 |
if ((val = params.fetch("ws_protocol"))) ret->ws_protocol = xs::in(val); |
|
|
4 |
79 |
if ((val = params.fetch("ws_protocol"))) ret->ws_protocol = xs::in(val); |
|
|
4 |
0 |
if ((val = params.fetch("ws_protocol"))) ret->ws_protocol = xs::in(val); |
|
|
4 |
0 |
if ((val = params.fetch("ws_protocol"))) ret->ws_protocol = xs::in(val); |
|
56
|
83 |
0 |
if ((val = params.fetch("ws_extensions"))) { |
|
|
6 |
77 |
if ((val = params.fetch("ws_extensions"))) { |
|
57
|
6 |
0 |
auto exts_av = xs::in(val); |
|
59
|
6 |
0 |
if (exts_av) av_to_header_values(exts_av, &exts); |
|
|
6 |
0 |
if (exts_av) av_to_header_values(exts_av, &exts); |
|
60
|
6 |
0 |
ret->ws_extensions(exts); |
|
66
|
1 |
0 |
auto ret = dest ? dest : ConnectResponseSP(new ConnectResponse()); |
|
|
0 |
0 |
auto ret = dest ? dest : ConnectResponseSP(new ConnectResponse()); |
|
|
0 |
0 |
auto ret = dest ? dest : ConnectResponseSP(new ConnectResponse()); |
|
67
|
1 |
0 |
http::fill(ret, params); |
|
71
|
1 |
0 |
if ((val = params.fetch("ws_extensions"))) { |
|
|
1 |
0 |
if ((val = params.fetch("ws_extensions"))) { |
|
73
|
1 |
0 |
av_to_header_values(xs::in(val), &exts); |
|
|
1 |
0 |
av_to_header_values(xs::in(val), &exts); |
|
74
|
1 |
0 |
ret->ws_extensions(exts); |
|
77
|
1 |
0 |
if ((val = params.fetch("ws_protocol"))) ret->ws_protocol = xs::in(val); |
|
|
1 |
0 |
if ((val = params.fetch("ws_protocol"))) ret->ws_protocol = xs::in(val); |
|
|
1 |
0 |
if ((val = params.fetch("ws_protocol"))) ret->ws_protocol = xs::in(val); |
|
|
1 |
0 |
if ((val = params.fetch("ws_protocol"))) ret->ws_protocol = xs::in(val); |
|
84
|
51 |
0 |
if ((val = h.fetch("max_frame_size"))) cfg.max_frame_size = Simple(val); |
|
|
5 |
46 |
if ((val = h.fetch("max_frame_size"))) cfg.max_frame_size = Simple(val); |
|
|
5 |
0 |
if ((val = h.fetch("max_frame_size"))) cfg.max_frame_size = Simple(val); |
|
|
5 |
0 |
if ((val = h.fetch("max_frame_size"))) cfg.max_frame_size = Simple(val); |
|
85
|
51 |
0 |
if ((val = h.fetch("max_message_size"))) cfg.max_message_size = Simple(val); |
|
|
9 |
42 |
if ((val = h.fetch("max_message_size"))) cfg.max_message_size = Simple(val); |
|
|
9 |
0 |
if ((val = h.fetch("max_message_size"))) cfg.max_message_size = Simple(val); |
|
|
9 |
0 |
if ((val = h.fetch("max_message_size"))) cfg.max_message_size = Simple(val); |
|
86
|
51 |
0 |
if ((val = h.fetch("max_handshake_size"))) cfg.max_handshake_size = Simple(val); |
|
|
2 |
49 |
if ((val = h.fetch("max_handshake_size"))) cfg.max_handshake_size = Simple(val); |
|
|
2 |
0 |
if ((val = h.fetch("max_handshake_size"))) cfg.max_handshake_size = Simple(val); |
|
|
2 |
0 |
if ((val = h.fetch("max_handshake_size"))) cfg.max_handshake_size = Simple(val); |
|
87
|
51 |
0 |
if ((val = h.fetch("check_utf8"))) cfg.check_utf8 = val.is_true(); |
|
|
7 |
44 |
if ((val = h.fetch("check_utf8"))) cfg.check_utf8 = val.is_true(); |
|
|
7 |
0 |
if ((val = h.fetch("check_utf8"))) cfg.check_utf8 = val.is_true(); |
|
89
|
51 |
0 |
if(h.exists("deflate")) cfg.deflate.reset(); |
|
|
24 |
27 |
if(h.exists("deflate")) cfg.deflate.reset(); |
|
90
|
51 |
0 |
Hash deflate_settings = h.fetch("deflate"); |
|
|
51 |
0 |
Hash deflate_settings = h.fetch("deflate"); |
|
91
|
23 |
28 |
if (deflate_settings) { |
|
92
|
23 |
0 |
auto dcfg = xs::in(deflate_settings); |
|
99
|
23 |
0 |
if ((val = h.fetch("server_max_window_bits"))) cfg.server_max_window_bits = static_cast(Simple(val)); |
|
|
7 |
16 |
if ((val = h.fetch("server_max_window_bits"))) cfg.server_max_window_bits = static_cast(Simple(val)); |
|
|
7 |
0 |
if ((val = h.fetch("server_max_window_bits"))) cfg.server_max_window_bits = static_cast(Simple(val)); |
|
|
7 |
0 |
if ((val = h.fetch("server_max_window_bits"))) cfg.server_max_window_bits = static_cast(Simple(val)); |
|
100
|
23 |
0 |
if ((val = h.fetch("client_max_window_bits"))) cfg.client_max_window_bits = static_cast(Simple(val)); |
|
|
13 |
10 |
if ((val = h.fetch("client_max_window_bits"))) cfg.client_max_window_bits = static_cast(Simple(val)); |
|
|
13 |
0 |
if ((val = h.fetch("client_max_window_bits"))) cfg.client_max_window_bits = static_cast(Simple(val)); |
|
|
13 |
0 |
if ((val = h.fetch("client_max_window_bits"))) cfg.client_max_window_bits = static_cast(Simple(val)); |
|
101
|
23 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
5 |
18 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
5 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
5 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
5 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
5 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
5 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
5 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
5 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("client_no_context_takeover"))) cfg.client_no_context_takeover = SvTRUE(val); |
|
102
|
23 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
4 |
19 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
4 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
4 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
4 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
4 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
4 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
4 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
4 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
|
0 |
0 |
if ((val = h.fetch("server_no_context_takeover"))) cfg.server_no_context_takeover = SvTRUE(val); |
|
103
|
23 |
0 |
if ((val = h.fetch("mem_level"))) cfg.mem_level = Simple(val); |
|
|
2 |
21 |
if ((val = h.fetch("mem_level"))) cfg.mem_level = Simple(val); |
|
|
2 |
0 |
if ((val = h.fetch("mem_level"))) cfg.mem_level = Simple(val); |
|
|
2 |
0 |
if ((val = h.fetch("mem_level"))) cfg.mem_level = Simple(val); |
|
104
|
23 |
0 |
if ((val = h.fetch("compression_level"))) cfg.compression_level = Simple(val); |
|
|
2 |
21 |
if ((val = h.fetch("compression_level"))) cfg.compression_level = Simple(val); |
|
|
2 |
0 |
if ((val = h.fetch("compression_level"))) cfg.compression_level = Simple(val); |
|
|
2 |
0 |
if ((val = h.fetch("compression_level"))) cfg.compression_level = Simple(val); |
|
105
|
23 |
0 |
if ((val = h.fetch("strategy"))) cfg.strategy = Simple(val); |
|
|
1 |
22 |
if ((val = h.fetch("strategy"))) cfg.strategy = Simple(val); |
|
|
1 |
0 |
if ((val = h.fetch("strategy"))) cfg.strategy = Simple(val); |
|
|
1 |
0 |
if ((val = h.fetch("strategy"))) cfg.strategy = Simple(val); |
|
106
|
23 |
0 |
if ((val = h.fetch("compression_threshold"))) cfg.compression_threshold = Simple(val); |
|
|
12 |
11 |
if ((val = h.fetch("compression_threshold"))) cfg.compression_threshold = Simple(val); |
|
|
12 |
0 |
if ((val = h.fetch("compression_threshold"))) cfg.compression_threshold = Simple(val); |
|
|
12 |
0 |
if ((val = h.fetch("compression_threshold"))) cfg.compression_threshold = Simple(val); |
|
110
|
102 |
0 |
Hash settings = Hash::create(); |
|
111
|
102 |
0 |
settings.store("server_max_window_bits", Simple(cfg.server_max_window_bits)); |
|
|
102 |
0 |
settings.store("server_max_window_bits", Simple(cfg.server_max_window_bits)); |
|
112
|
102 |
0 |
settings.store("client_max_window_bits", Simple(cfg.client_max_window_bits)); |
|
|
102 |
0 |
settings.store("client_max_window_bits", Simple(cfg.client_max_window_bits)); |
|
113
|
102 |
0 |
settings.store("client_no_context_takeover", Simple(cfg.client_no_context_takeover)); |
|
|
102 |
0 |
settings.store("client_no_context_takeover", Simple(cfg.client_no_context_takeover)); |
|
114
|
102 |
0 |
settings.store("server_no_context_takeover", Simple(cfg.server_no_context_takeover)); |
|
|
102 |
0 |
settings.store("server_no_context_takeover", Simple(cfg.server_no_context_takeover)); |
|
115
|
102 |
0 |
settings.store("mem_level", Simple(cfg.mem_level)); |
|
|
102 |
0 |
settings.store("mem_level", Simple(cfg.mem_level)); |
|
116
|
102 |
0 |
settings.store("compression_level", Simple(cfg.compression_level)); |
|
|
102 |
0 |
settings.store("compression_level", Simple(cfg.compression_level)); |
|
117
|
102 |
0 |
settings.store("strategy", Simple(cfg.strategy)); |
|
|
102 |
0 |
settings.store("strategy", Simple(cfg.strategy)); |
|
118
|
102 |
0 |
settings.store("compression_threshold", Simple(cfg.compression_threshold)); |
|
|
102 |
0 |
settings.store("compression_threshold", Simple(cfg.compression_threshold)); |
|
119
|
102 |
0 |
return Ref::create(settings); |