/usr/include/boost/beast/websocket/detail
NameSizeModeActions
decorator.hpp67110644editdlrm
frame.hpp56790644editdlrm
hybi13.hpp11040644editdlrm
hybi13.ipp17300644editdlrm
impl_base.hpp126110644editdlrm
mask.hpp13500644editdlrm
mask.ipp14140644editdlrm
pmd_extension.hpp27630644editdlrm
pmd_extension.ipp96830644editdlrm
prng.hpp11890644editdlrm
prng.ipp30510644editdlrm
service.hpp15710644editdlrm
service.ipp13240644editdlrm
soft_mutex.hpp22410644editdlrm
type_traits.hpp8980644editdlrm
utf8_checker.hpp23400644editdlrm
utf8_checker.ipp96060644editdlrm
Edit: /usr/include/boost/beast/websocket/detail/service.ipp (1324B)
// // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // // Official repository: https://github.com/boostorg/beast // #ifndef BOOST_BEAST_WEBSOCKET_DETAIL_SERVICE_IPP #define BOOST_BEAST_WEBSOCKET_DETAIL_SERVICE_IPP #include namespace boost { namespace beast { namespace websocket { namespace detail { service:: impl_type:: impl_type(net::execution_context& ctx) : svc_(net::use_service(ctx)) { std::lock_guard g(svc_.m_); index_ = svc_.v_.size(); svc_.v_.push_back(this); } void service:: impl_type:: remove() { std::lock_guard g(svc_.m_); auto& other = *svc_.v_.back(); other.index_ = index_; svc_.v_[index_] = &other; svc_.v_.pop_back(); } //--- void service:: shutdown() { std::vector> v; { std::lock_guard g(m_); v.reserve(v_.size()); for(auto p : v_) v.emplace_back(p->weak_from_this()); } for(auto wp : v) if(auto sp = wp.lock()) sp->shutdown(); } } // detail } // websocket } // beast } // boost #endif