include/boost/corosio/detail/intrusive.hpp
100.0% Lines (103 / 103)
87.3% Functions (137 / 157)
Functions (157)
Function
Calls
Lines
Blocks
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_datagram_socket>::intrusive_list()
:47
164x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_acceptor>::intrusive_list()
:47
98x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_socket>::intrusive_list()
:47
216x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_acceptor>::intrusive_list()
:47
718x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_socket>::intrusive_list()
:47
870x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_udp_socket>::intrusive_list()
:47
224x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file::raf_op>::intrusive_list()
:47
438x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file>::intrusive_list()
:47
328x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_resolver>::intrusive_list()
:47
134x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_signal>::intrusive_list()
:47
334x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_stream_file>::intrusive_list()
:47
438x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_datagram_socket>::intrusive_list()
:47
154x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_acceptor>::intrusive_list()
:47
92x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_socket>::intrusive_list()
:47
202x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_acceptor>::intrusive_list()
:47
562x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_socket>::intrusive_list()
:47
682x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_udp_socket>::intrusive_list()
:47
302x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::timer::implementation>::intrusive_list()
:47
4620x
100.0%
100.0%
boost::corosio::detail::intrusive_list<(anonymous namespace)::list_item>::intrusive_list(boost::corosio::detail::intrusive_list<(anonymous namespace)::list_item>&&)
:49
1x
100.0%
100.0%
boost::corosio::detail::intrusive_list<(anonymous namespace)::list_item>::empty() const
:61
12x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::(anonymous namespace)::pool_impl>::empty() const
:61
4x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_datagram_socket>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_acceptor>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_socket>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_acceptor>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_socket>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_udp_socket>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file::raf_op>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_resolver>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_signal>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_stream_file>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_datagram_socket>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_acceptor>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_socket>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_acceptor>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_socket>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_udp_socket>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::timer::implementation>::empty() const
:61
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<(anonymous namespace)::list_item>::front() const
:67
6x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::(anonymous namespace)::pool_impl>::push_front(boost::corosio::detail::(anonymous namespace)::pool_impl*)
:72
5x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::push_front(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)
:72
0
0.0%
0.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_datagram_socket>::push_front(boost::corosio::detail::epoll_local_datagram_socket*)
:72
138x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_acceptor>::push_front(boost::corosio::detail::epoll_local_stream_acceptor*)
:72
89x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_socket>::push_front(boost::corosio::detail::epoll_local_stream_socket*)
:72
187x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_acceptor>::push_front(boost::corosio::detail::epoll_tcp_acceptor*)
:72
412x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_socket>::push_front(boost::corosio::detail::epoll_tcp_socket*)
:72
8127x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_udp_socket>::push_front(boost::corosio::detail::epoll_udp_socket*)
:72
156x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file::raf_op>::push_front(boost::corosio::detail::posix_random_access_file::raf_op*)
:72
494x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file>::push_front(boost::corosio::detail::posix_random_access_file*)
:72
215x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_resolver>::push_front(boost::corosio::detail::posix_resolver*)
:72
129x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_signal>::push_front(boost::corosio::detail::posix_signal*)
:72
252x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_stream_file>::push_front(boost::corosio::detail::posix_stream_file*)
:72
335x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_datagram_socket>::push_front(boost::corosio::detail::select_local_datagram_socket*)
:72
153x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_acceptor>::push_front(boost::corosio::detail::select_local_stream_acceptor*)
:72
85x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_socket>::push_front(boost::corosio::detail::select_local_stream_socket*)
:72
188x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_acceptor>::push_front(boost::corosio::detail::select_tcp_acceptor*)
:72
334x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_socket>::push_front(boost::corosio::detail::select_tcp_socket*)
:72
6569x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_udp_socket>::push_front(boost::corosio::detail::select_udp_socket*)
:72
217x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::timer::implementation>::push_front(boost::corosio::detail::timer::implementation*)
:72
2391x
100.0%
80.0%
boost::corosio::detail::intrusive_list<(anonymous namespace)::list_item>::push_back((anonymous namespace)::list_item*)
:84
19x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::(anonymous namespace)::pool_impl>::push_back(boost::corosio::detail::(anonymous namespace)::pool_impl*)
:84
8x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::push_back(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)
:84
1x
88.9%
50.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_datagram_socket>::push_back(boost::corosio::detail::epoll_local_datagram_socket*)
:84
175x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_acceptor>::push_back(boost::corosio::detail::epoll_local_stream_acceptor*)
:84
91x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_socket>::push_back(boost::corosio::detail::epoll_local_stream_socket*)
:84
220x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_acceptor>::push_back(boost::corosio::detail::epoll_tcp_acceptor*)
:84
422x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_socket>::push_back(boost::corosio::detail::epoll_tcp_socket*)
:84
8225x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_udp_socket>::push_back(boost::corosio::detail::epoll_udp_socket*)
:84
200x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file::raf_op>::push_back(boost::corosio::detail::posix_random_access_file::raf_op*)
:84
494x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file>::push_back(boost::corosio::detail::posix_random_access_file*)
:84
219x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_resolver>::push_back(boost::corosio::detail::posix_resolver*)
:84
132x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_signal>::push_back(boost::corosio::detail::posix_signal*)
:84
258x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_stream_file>::push_back(boost::corosio::detail::posix_stream_file*)
:84
339x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_datagram_socket>::push_back(boost::corosio::detail::select_local_datagram_socket*)
:84
164x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_acceptor>::push_back(boost::corosio::detail::select_local_stream_acceptor*)
:84
87x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_socket>::push_back(boost::corosio::detail::select_local_stream_socket*)
:84
201x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_acceptor>::push_back(boost::corosio::detail::select_tcp_acceptor*)
:84
343x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_socket>::push_back(boost::corosio::detail::select_tcp_socket*)
:84
6631x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_udp_socket>::push_back(boost::corosio::detail::select_udp_socket*)
:84
236x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::timer::implementation>::push_back(boost::corosio::detail::timer::implementation*)
:84
17235x
100.0%
80.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::waiter_node>::push_back(boost::corosio::detail::waiter_node*)
:84
20089x
100.0%
100.0%
boost::corosio::detail::intrusive_list<(anonymous namespace)::list_item>::splice_back(boost::corosio::detail::intrusive_list<(anonymous namespace)::list_item>&)
:96
3x
100.0%
100.0%
boost::corosio::detail::intrusive_list<(anonymous namespace)::list_item>::pop_front()
:115
14x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::(anonymous namespace)::pool_impl>::pop_front()
:115
21x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::pop_front()
:115
4x
91.7%
62.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_datagram_socket>::pop_front()
:115
439x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_acceptor>::pop_front()
:115
241x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_socket>::pop_front()
:115
566x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_acceptor>::pop_front()
:115
1510x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_socket>::pop_front()
:115
10037x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_udp_socket>::pop_front()
:115
545x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file::raf_op>::pop_front()
:115
1115x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file>::pop_front()
:115
764x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_resolver>::pop_front()
:115
332x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_signal>::pop_front()
:115
778x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_stream_file>::pop_front()
:115
1050x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_datagram_socket>::pop_front()
:115
435x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_acceptor>::pop_front()
:115
228x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_socket>::pop_front()
:115
543x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_acceptor>::pop_front()
:115
1196x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_socket>::pop_front()
:115
8033x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_udp_socket>::pop_front()
:115
721x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::timer::implementation>::pop_front()
:115
9885x
100.0%
81.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::waiter_node>::pop_front()
:115
308170x
100.0%
100.0%
boost::corosio::detail::intrusive_list<(anonymous namespace)::list_item>::remove((anonymous namespace)::list_item*)
:154
4x
100.0%
100.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::(anonymous namespace)::pool_impl>::remove(boost::corosio::detail::(anonymous namespace)::pool_impl*)
:154
9x
92.3%
73.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::remove(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)
:154
1x
30.8%
36.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_datagram_socket>::remove(boost::corosio::detail::epoll_local_datagram_socket*)
:154
175x
92.3%
77.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_acceptor>::remove(boost::corosio::detail::epoll_local_stream_acceptor*)
:154
91x
84.6%
64.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_socket>::remove(boost::corosio::detail::epoll_local_stream_socket*)
:154
220x
92.3%
77.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_acceptor>::remove(boost::corosio::detail::epoll_tcp_acceptor*)
:154
419x
92.3%
77.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_socket>::remove(boost::corosio::detail::epoll_tcp_socket*)
:154
8222x
92.3%
77.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_udp_socket>::remove(boost::corosio::detail::epoll_udp_socket*)
:154
200x
92.3%
77.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file::raf_op>::remove(boost::corosio::detail::posix_random_access_file::raf_op*)
:154
494x
84.6%
64.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file>::remove(boost::corosio::detail::posix_random_access_file*)
:154
217x
84.6%
64.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_resolver>::remove(boost::corosio::detail::posix_resolver*)
:154
131x
84.6%
64.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_signal>::remove(boost::corosio::detail::posix_signal*)
:154
252x
84.6%
64.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_stream_file>::remove(boost::corosio::detail::posix_stream_file*)
:154
337x
84.6%
64.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_datagram_socket>::remove(boost::corosio::detail::select_local_datagram_socket*)
:154
164x
92.3%
77.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_acceptor>::remove(boost::corosio::detail::select_local_stream_acceptor*)
:154
87x
84.6%
64.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_socket>::remove(boost::corosio::detail::select_local_stream_socket*)
:154
201x
92.3%
77.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_acceptor>::remove(boost::corosio::detail::select_tcp_acceptor*)
:154
341x
92.3%
77.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_socket>::remove(boost::corosio::detail::select_tcp_socket*)
:154
6629x
92.3%
77.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::select_udp_socket>::remove(boost::corosio::detail::select_udp_socket*)
:154
236x
92.3%
77.0%
boost::corosio::detail::intrusive_list<boost::corosio::detail::timer::implementation>::remove(boost::corosio::detail::timer::implementation*)
:154
17235x
92.3%
77.0%
void boost::corosio::detail::intrusive_list<(anonymous namespace)::list_item>::for_each<intrusive_test::testListForEach()::{lambda((anonymous namespace)::list_item*)#1}>(intrusive_test::testListForEach()::{lambda((anonymous namespace)::list_item*)#1})
:175
1x
100.0%
100.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::(anonymous namespace)::pool_impl>::for_each<boost::corosio::detail::object_pool_test::run()::{lambda(boost::corosio::detail::(anonymous namespace)::pool_impl*)#1}>(boost::corosio::detail::object_pool_test::run()::{lambda(boost::corosio::detail::(anonymous namespace)::pool_impl*)#1})
:175
1x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::for_each<boost::corosio::detail::object_pool_test::run()::{lambda(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)#1}>(boost::corosio::detail::object_pool_test::run()::{lambda(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)#1})
:175
1x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_datagram_socket>::for_each<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::epoll_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::epoll_scheduler, boost::corosio::detail::epoll_local_datagram_socket>::shutdown()::{lambda(boost::corosio::detail::epoll_local_datagram_socket*)#1}>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::epoll_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::epoll_scheduler, boost::corosio::detail::epoll_local_datagram_socket>::shutdown()::{lambda(boost::corosio::detail::epoll_local_datagram_socket*)#1})
:175
82x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_acceptor>::for_each<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::epoll_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::epoll_scheduler, boost::corosio::detail::epoll_local_stream_acceptor, boost::corosio::detail::epoll_local_stream_service>::shutdown()::{lambda(boost::corosio::detail::epoll_local_stream_acceptor*)#1}>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::epoll_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::epoll_scheduler, boost::corosio::detail::epoll_local_stream_acceptor, boost::corosio::detail::epoll_local_stream_service>::shutdown()::{lambda(boost::corosio::detail::epoll_local_stream_acceptor*)#1})
:175
49x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_local_stream_socket>::for_each<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::epoll_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::epoll_scheduler, boost::corosio::detail::epoll_local_stream_socket>::shutdown()::{lambda(boost::corosio::detail::epoll_local_stream_socket*)#1}>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::epoll_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::epoll_scheduler, boost::corosio::detail::epoll_local_stream_socket>::shutdown()::{lambda(boost::corosio::detail::epoll_local_stream_socket*)#1})
:175
108x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_acceptor>::for_each<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::epoll_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::epoll_scheduler, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::detail::epoll_tcp_service>::shutdown()::{lambda(boost::corosio::detail::epoll_tcp_acceptor*)#1}>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::epoll_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::epoll_scheduler, boost::corosio::detail::epoll_tcp_acceptor, boost::corosio::detail::epoll_tcp_service>::shutdown()::{lambda(boost::corosio::detail::epoll_tcp_acceptor*)#1})
:175
359x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_tcp_socket>::for_each<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::epoll_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::epoll_scheduler, boost::corosio::detail::epoll_tcp_socket>::shutdown()::{lambda(boost::corosio::detail::epoll_tcp_socket*)#1}>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::epoll_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::epoll_scheduler, boost::corosio::detail::epoll_tcp_socket>::shutdown()::{lambda(boost::corosio::detail::epoll_tcp_socket*)#1})
:175
435x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::epoll_udp_socket>::for_each<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::epoll_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::epoll_scheduler, boost::corosio::detail::epoll_udp_socket>::shutdown()::{lambda(boost::corosio::detail::epoll_udp_socket*)#1}>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::epoll_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::epoll_scheduler, boost::corosio::detail::epoll_udp_socket>::shutdown()::{lambda(boost::corosio::detail::epoll_udp_socket*)#1})
:175
112x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file::raf_op>::for_each<boost::corosio::detail::posix_random_access_file::cancel()::{lambda(boost::corosio::detail::posix_random_access_file::raf_op*)#1}>(boost::corosio::detail::posix_random_access_file::cancel()::{lambda(boost::corosio::detail::posix_random_access_file::raf_op*)#1})
:175
638x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_random_access_file>::for_each<boost::corosio::detail::posix_random_access_file_service::shutdown()::{lambda(boost::corosio::detail::posix_random_access_file*)#1}>(boost::corosio::detail::posix_random_access_file_service::shutdown()::{lambda(boost::corosio::detail::posix_random_access_file*)#1})
:175
164x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_resolver>::for_each<boost::corosio::detail::posix_resolver_service::shutdown()::{lambda(boost::corosio::detail::posix_resolver*)#1}>(boost::corosio::detail::posix_resolver_service::shutdown()::{lambda(boost::corosio::detail::posix_resolver*)#1})
:175
67x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_signal>::for_each<boost::corosio::detail::posix_signal_service::shutdown()::{lambda(boost::corosio::detail::posix_signal*)#1}>(boost::corosio::detail::posix_signal_service::shutdown()::{lambda(boost::corosio::detail::posix_signal*)#1})
:175
167x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::posix_stream_file>::for_each<boost::corosio::detail::posix_stream_file_service::shutdown()::{lambda(boost::corosio::detail::posix_stream_file*)#1}>(boost::corosio::detail::posix_stream_file_service::shutdown()::{lambda(boost::corosio::detail::posix_stream_file*)#1})
:175
219x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_datagram_socket>::for_each<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_datagram_socket>::shutdown()::{lambda(boost::corosio::detail::select_local_datagram_socket*)#1}>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_datagram_socket>::shutdown()::{lambda(boost::corosio::detail::select_local_datagram_socket*)#1})
:175
77x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_acceptor>::for_each<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::detail::select_local_stream_service>::shutdown()::{lambda(boost::corosio::detail::select_local_stream_acceptor*)#1}>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::detail::select_local_stream_service>::shutdown()::{lambda(boost::corosio::detail::select_local_stream_acceptor*)#1})
:175
46x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::select_local_stream_socket>::for_each<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_socket>::shutdown()::{lambda(boost::corosio::detail::select_local_stream_socket*)#1}>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_socket>::shutdown()::{lambda(boost::corosio::detail::select_local_stream_socket*)#1})
:175
101x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_acceptor>::for_each<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_acceptor, boost::corosio::detail::select_tcp_service>::shutdown()::{lambda(boost::corosio::detail::select_tcp_acceptor*)#1}>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_acceptor, boost::corosio::detail::select_tcp_service>::shutdown()::{lambda(boost::corosio::detail::select_tcp_acceptor*)#1})
:175
281x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::select_tcp_socket>::for_each<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_socket>::shutdown()::{lambda(boost::corosio::detail::select_tcp_socket*)#1}>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_socket>::shutdown()::{lambda(boost::corosio::detail::select_tcp_socket*)#1})
:175
341x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::select_udp_socket>::for_each<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_udp_socket>::shutdown()::{lambda(boost::corosio::detail::select_udp_socket*)#1}>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_udp_socket>::shutdown()::{lambda(boost::corosio::detail::select_udp_socket*)#1})
:175
151x
100.0%
88.0%
void boost::corosio::detail::intrusive_list<boost::corosio::detail::timer::implementation>::for_each<boost::corosio::detail::timer_service::shutdown()::{lambda(boost::corosio::detail::timer::implementation*)#1}>(boost::corosio::detail::timer_service::shutdown()::{lambda(boost::corosio::detail::timer::implementation*)#1})
:175
2310x
100.0%
88.0%
boost::corosio::detail::intrusive_queue<boost::corosio::detail::pool_work_item>::intrusive_queue()
:217
2313x
100.0%
100.0%
boost::corosio::detail::intrusive_queue<(anonymous namespace)::queue_item>::intrusive_queue(boost::corosio::detail::intrusive_queue<(anonymous namespace)::queue_item>&&)
:219
1x
100.0%
100.0%
boost::corosio::detail::intrusive_queue<(anonymous namespace)::queue_item>::empty() const
:231
10x
100.0%
100.0%
boost::corosio::detail::intrusive_queue<boost::corosio::detail::pool_work_item>::empty() const
:231
1341x
100.0%
100.0%
boost::corosio::detail::intrusive_queue<(anonymous namespace)::queue_item>::push((anonymous namespace)::queue_item*)
:236
9x
100.0%
100.0%
boost::corosio::detail::intrusive_queue<boost::corosio::detail::pool_work_item>::push(boost::corosio::detail::pool_work_item*)
:236
825x
100.0%
100.0%
boost::corosio::detail::intrusive_queue<(anonymous namespace)::queue_item>::splice(boost::corosio::detail::intrusive_queue<(anonymous namespace)::queue_item>&)
:246
3x
100.0%
100.0%
boost::corosio::detail::intrusive_queue<(anonymous namespace)::queue_item>::pop()
:259
10x
100.0%
100.0%
boost::corosio::detail::intrusive_queue<boost::corosio::detail::pool_work_item>::pop()
:259
3436x
100.0%
100.0%
| Line | TLA | Hits | Source Code |
|---|---|---|---|
| 1 | // | ||
| 2 | // Copyright (c) 2025 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/corosio | ||
| 8 | // | ||
| 9 | |||
| 10 | #ifndef BOOST_COROSIO_DETAIL_INTRUSIVE_HPP | ||
| 11 | #define BOOST_COROSIO_DETAIL_INTRUSIVE_HPP | ||
| 12 | |||
| 13 | namespace boost::corosio::detail { | ||
| 14 | |||
| 15 | /** An intrusive doubly linked list. | ||
| 16 | |||
| 17 | This container provides O(1) push and pop operations for | ||
| 18 | elements that derive from @ref node. Elements are not | ||
| 19 | copied or moved; they are linked directly into the list. | ||
| 20 | |||
| 21 | @tparam T The element type. Must derive from `intrusive_list<T>::node`. | ||
| 22 | */ | ||
| 23 | template<class T> | ||
| 24 | class intrusive_list | ||
| 25 | { | ||
| 26 | public: | ||
| 27 | /** Base class for list elements. | ||
| 28 | |||
| 29 | Derive from this class to make a type usable with | ||
| 30 | @ref intrusive_list. The `next_` and `prev_` pointers | ||
| 31 | are private and accessible only to the list. | ||
| 32 | */ | ||
| 33 | class node | ||
| 34 | { | ||
| 35 | friend class intrusive_list; | ||
| 36 | |||
| 37 | private: | ||
| 38 | T* next_ = nullptr; | ||
| 39 | T* prev_ = nullptr; | ||
| 40 | }; | ||
| 41 | |||
| 42 | private: | ||
| 43 | T* head_ = nullptr; | ||
| 44 | T* tail_ = nullptr; | ||
| 45 | |||
| 46 | public: | ||
| 47 | 10576x | intrusive_list() = default; | |
| 48 | |||
| 49 | 1x | intrusive_list(intrusive_list&& other) noexcept | |
| 50 | 1x | : head_(other.head_) | |
| 51 | 1x | , tail_(other.tail_) | |
| 52 | { | ||
| 53 | 1x | other.head_ = nullptr; | |
| 54 | 1x | other.tail_ = nullptr; | |
| 55 | 1x | } | |
| 56 | |||
| 57 | intrusive_list(intrusive_list const&) = delete; | ||
| 58 | intrusive_list& operator=(intrusive_list const&) = delete; | ||
| 59 | intrusive_list& operator=(intrusive_list&&) = delete; | ||
| 60 | |||
| 61 | 16x | bool empty() const noexcept | |
| 62 | { | ||
| 63 | 16x | return head_ == nullptr; | |
| 64 | } | ||
| 65 | |||
| 66 | /// Peek at the head element without removing it. | ||
| 67 | 6x | T* front() const noexcept | |
| 68 | { | ||
| 69 | 6x | return head_; | |
| 70 | } | ||
| 71 | |||
| 72 | 20476x | void push_front(T* w) noexcept | |
| 73 | { | ||
| 74 | 20476x | auto* n = static_cast<node*>(w); | |
| 75 | 20476x | n->prev_ = nullptr; | |
| 76 | 20476x | n->next_ = head_; | |
| 77 | 20476x | if (head_) | |
| 78 | 12504x | static_cast<node*>(head_)->prev_ = w; | |
| 79 | else | ||
| 80 | 7972x | tail_ = w; | |
| 81 | 20476x | head_ = w; | |
| 82 | 20476x | } | |
| 83 | |||
| 84 | 55789x | void push_back(T* w) noexcept | |
| 85 | { | ||
| 86 | 55789x | auto* n = static_cast<node*>(w); | |
| 87 | 55789x | n->next_ = nullptr; | |
| 88 | 55789x | n->prev_ = tail_; | |
| 89 | 55789x | if (tail_) | |
| 90 | 40606x | static_cast<node*>(tail_)->next_ = w; | |
| 91 | else | ||
| 92 | 15183x | head_ = w; | |
| 93 | 55789x | tail_ = w; | |
| 94 | 55789x | } | |
| 95 | |||
| 96 | 3x | void splice_back(intrusive_list& other) noexcept | |
| 97 | { | ||
| 98 | 3x | if (other.empty()) | |
| 99 | 1x | return; | |
| 100 | 2x | if (tail_) | |
| 101 | { | ||
| 102 | 1x | static_cast<node*>(tail_)->next_ = other.head_; | |
| 103 | 1x | static_cast<node*>(other.head_)->prev_ = tail_; | |
| 104 | 1x | tail_ = other.tail_; | |
| 105 | } | ||
| 106 | else | ||
| 107 | { | ||
| 108 | 1x | head_ = other.head_; | |
| 109 | 1x | tail_ = other.tail_; | |
| 110 | } | ||
| 111 | 2x | other.head_ = nullptr; | |
| 112 | 2x | other.tail_ = nullptr; | |
| 113 | } | ||
| 114 | |||
| 115 | 346627x | T* pop_front() noexcept | |
| 116 | { | ||
| 117 | 346627x | if (!head_) | |
| 118 | 306027x | return nullptr; | |
| 119 | 40600x | T* w = head_; | |
| 120 | 40600x | head_ = static_cast<node*>(head_)->next_; | |
| 121 | 40600x | if (head_) | |
| 122 | 22167x | static_cast<node*>(head_)->prev_ = nullptr; | |
| 123 | else | ||
| 124 | 18433x | tail_ = nullptr; | |
| 125 | // Defensive: clear stale linkage so remove() on a | ||
| 126 | // popped node cannot corrupt the list. | ||
| 127 | 40600x | auto* n = static_cast<node*>(w); | |
| 128 | 40600x | n->next_ = nullptr; | |
| 129 | 40600x | n->prev_ = nullptr; | |
| 130 | 40600x | return w; | |
| 131 | } | ||
| 132 | |||
| 133 | /** Unlink @p w if it is a member of this list. | ||
| 134 | |||
| 135 | @pre @p w is either a genuine member of `*this` list, or is | ||
| 136 | fully detached (not linked in *any* `intrusive_list<T>`, | ||
| 137 | including a different instance over the same `T`). This is | ||
| 138 | not a membership test: `T::node` holds one shared `next_`/ | ||
| 139 | `prev_` pair regardless of which list currently owns it, so a | ||
| 140 | node actually linked in a different list looks "not detached" | ||
| 141 | here and would be spliced out using *this* list's `head_`/ | ||
| 142 | `tail_` for the boundary cases — corrupting both lists. A | ||
| 143 | caller that cannot rule that out needs its own bookkeeping | ||
| 144 | (e.g. a flag for which list currently owns the node) before | ||
| 145 | calling this. | ||
| 146 | |||
| 147 | @return True if @p w was linked in and has now been removed; | ||
| 148 | false if it was already detached (e.g. a reentrant call from | ||
| 149 | a self-referential keepalive dropping during the same | ||
| 150 | teardown that already popped it elsewhere). Callers that gate | ||
| 151 | a one-time action (recycling, deleting) on actually having | ||
| 152 | removed something rely on this to make that action idempotent. | ||
| 153 | */ | ||
| 154 | 35665x | bool remove(T* w) noexcept | |
| 155 | { | ||
| 156 | 35665x | auto* n = static_cast<node*>(w); | |
| 157 | // Already detached — nothing to do. | ||
| 158 | 35665x | if (!n->next_ && !n->prev_ && head_ != w && tail_ != w) | |
| 159 | 3x | return false; | |
| 160 | 35662x | if (n->prev_) | |
| 161 | 20020x | static_cast<node*>(n->prev_)->next_ = n->next_; | |
| 162 | else | ||
| 163 | 15642x | head_ = n->next_; | |
| 164 | 35662x | if (n->next_) | |
| 165 | 20091x | static_cast<node*>(n->next_)->prev_ = n->prev_; | |
| 166 | else | ||
| 167 | 15571x | tail_ = n->prev_; | |
| 168 | 35662x | n->next_ = nullptr; | |
| 169 | 35662x | n->prev_ = nullptr; | |
| 170 | 35662x | return true; | |
| 171 | } | ||
| 172 | |||
| 173 | /// Invoke @p f for each element in the list. | ||
| 174 | template<class F> | ||
| 175 | 5710x | void for_each(F f) | |
| 176 | { | ||
| 177 | 6109x | for (T* p = head_; p; p = static_cast<node*>(p)->next_) | |
| 178 | 399x | f(p); | |
| 179 | 5710x | } | |
| 180 | }; | ||
| 181 | |||
| 182 | /** An intrusive singly linked FIFO queue. | ||
| 183 | |||
| 184 | This container provides O(1) push and pop operations for | ||
| 185 | elements that derive from @ref node. Elements are not | ||
| 186 | copied or moved; they are linked directly into the queue. | ||
| 187 | |||
| 188 | Unlike @ref intrusive_list, this uses only a single `next_` | ||
| 189 | pointer per node, saving memory at the cost of not supporting | ||
| 190 | O(1) removal of arbitrary elements. | ||
| 191 | |||
| 192 | @tparam T The element type. Must derive from `intrusive_queue<T>::node`. | ||
| 193 | */ | ||
| 194 | template<class T> | ||
| 195 | class intrusive_queue | ||
| 196 | { | ||
| 197 | public: | ||
| 198 | /** Base class for queue elements. | ||
| 199 | |||
| 200 | Derive from this class to make a type usable with | ||
| 201 | @ref intrusive_queue. The `next_` pointer is private | ||
| 202 | and accessible only to the queue. | ||
| 203 | */ | ||
| 204 | class node | ||
| 205 | { | ||
| 206 | friend class intrusive_queue; | ||
| 207 | |||
| 208 | private: | ||
| 209 | T* next_ = nullptr; | ||
| 210 | }; | ||
| 211 | |||
| 212 | private: | ||
| 213 | T* head_ = nullptr; | ||
| 214 | T* tail_ = nullptr; | ||
| 215 | |||
| 216 | public: | ||
| 217 | 2313x | intrusive_queue() = default; | |
| 218 | |||
| 219 | 1x | intrusive_queue(intrusive_queue&& other) noexcept | |
| 220 | 1x | : head_(other.head_) | |
| 221 | 1x | , tail_(other.tail_) | |
| 222 | { | ||
| 223 | 1x | other.head_ = nullptr; | |
| 224 | 1x | other.tail_ = nullptr; | |
| 225 | 1x | } | |
| 226 | |||
| 227 | intrusive_queue(intrusive_queue const&) = delete; | ||
| 228 | intrusive_queue& operator=(intrusive_queue const&) = delete; | ||
| 229 | intrusive_queue& operator=(intrusive_queue&&) = delete; | ||
| 230 | |||
| 231 | 1351x | bool empty() const noexcept | |
| 232 | { | ||
| 233 | 1351x | return head_ == nullptr; | |
| 234 | } | ||
| 235 | |||
| 236 | 834x | void push(T* w) noexcept | |
| 237 | { | ||
| 238 | 834x | w->next_ = nullptr; | |
| 239 | 834x | if (tail_) | |
| 240 | 262x | tail_->next_ = w; | |
| 241 | else | ||
| 242 | 572x | head_ = w; | |
| 243 | 834x | tail_ = w; | |
| 244 | 834x | } | |
| 245 | |||
| 246 | 3x | void splice(intrusive_queue& other) noexcept | |
| 247 | { | ||
| 248 | 3x | if (other.empty()) | |
| 249 | 1x | return; | |
| 250 | 2x | if (tail_) | |
| 251 | 1x | tail_->next_ = other.head_; | |
| 252 | else | ||
| 253 | 1x | head_ = other.head_; | |
| 254 | 2x | tail_ = other.tail_; | |
| 255 | 2x | other.head_ = nullptr; | |
| 256 | 2x | other.tail_ = nullptr; | |
| 257 | } | ||
| 258 | |||
| 259 | 3446x | T* pop() noexcept | |
| 260 | { | ||
| 261 | 3446x | if (!head_) | |
| 262 | 2612x | return nullptr; | |
| 263 | 834x | T* w = head_; | |
| 264 | 834x | head_ = head_->next_; | |
| 265 | 834x | if (!head_) | |
| 266 | 571x | tail_ = nullptr; | |
| 267 | // Defensive: clear stale linkage on popped node. | ||
| 268 | 834x | w->next_ = nullptr; | |
| 269 | 834x | return w; | |
| 270 | } | ||
| 271 | }; | ||
| 272 | |||
| 273 | } // namespace boost::corosio::detail | ||
| 274 | |||
| 275 | #endif | ||
| 276 |