GCC Code Coverage Report


Directory: libs/http_proto/include/boost/http_proto/
File: boost/http_proto/impl/context.ipp
Date: 2023-12-23 23:40:21
Exec Total Coverage
Lines: 17 18 94.4%
Functions: 4 4 100.0%
Branches: 4 6 66.7%

Line Branch Exec Source
1 //
2 // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // Official repository: https://github.com/CPPAlliance/http_proto
8 //
9
10 #ifndef BOOST_HTTP_PROTO_IMPL_CONTEXT_IPP
11 #define BOOST_HTTP_PROTO_IMPL_CONTEXT_IPP
12
13 #include <boost/http_proto/context.hpp>
14 #include <boost/http_proto/detail/except.hpp>
15 //#include <boost/unordered_map.hpp> // doesn't support heterogenous lookup yet
16 #include <unordered_map>
17
18 namespace boost {
19 namespace http_proto {
20
21 struct context::data
22 {
23 // Installed services
24 std::unordered_map<
25 detail::type_index,
26 std::unique_ptr<service>
27 > services;
28 };
29
30 //------------------------------------------------
31
32 32 context::
33 32 ~context()
34 {
35 32 }
36
37 32 context::
38 32 context()
39 32 : p_(new data)
40 {
41 32 }
42
43 //------------------------------------------------
44
45 auto
46 822 context::
47 find_service_impl(
48 detail::type_index id) const noexcept ->
49 service*
50 {
51 822 auto it = p_->services.find(id);
52
2/2
✓ Branch 3 taken 791 times.
✓ Branch 4 taken 31 times.
822 if(it != p_->services.end())
53 791 return it->second.get();
54 31 return nullptr;
55 }
56
57 auto
58 31 context::
59 make_service_impl(
60 detail::type_index id,
61 std::unique_ptr<service> sp) ->
62 service&
63 {
64 auto const result =
65 31 p_->services.emplace(
66
1/2
✓ Branch 2 taken 31 times.
✗ Branch 3 not taken.
31 id, std::move(sp));
67
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 31 times.
31 if(! result.second)
68 {
69 // already exists
70 detail::throw_out_of_range();
71 }
72 62 return *result.first->second;
73 }
74
75 } // http_proto
76 } // boost
77
78 #endif
79