1//
2// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot 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/boostorg/beast
8//
9
10#ifndef BOOST_BEAST_WEBSOCKET_DETAIL_MASK_HPP
11#define BOOST_BEAST_WEBSOCKET_DETAIL_MASK_HPP
12
13#include <boost/beast/core/detail/config.hpp>
14#include <boost/beast/core/buffers_range.hpp>
15#include <boost/asio/buffer.hpp>
16#include <array>
17#include <climits>
18#include <cstdint>
19#include <random>
20#include <type_traits>
21
22namespace boost {
23namespace beast {
24namespace websocket {
25namespace detail {
26
27using prepared_key = std::array<unsigned char, 4>;
28
29BOOST_BEAST_DECL
30void
31prepare_key(prepared_key& prepared, std::uint32_t key);
32
33// Apply mask in place
34//
35BOOST_BEAST_DECL
36void
37mask_inplace(net::mutable_buffer const& b, prepared_key& key);
38
39// Apply mask in place
40//
41template<class MutableBufferSequence>
42void
43mask_inplace(
44 MutableBufferSequence const& buffers,
45 prepared_key& key)
46{
47 for(net::mutable_buffer b :
48 beast::buffers_range_ref(buffers))
49 detail::mask_inplace(b, key);
50}
51
52} // detail
53} // websocket
54} // beast
55} // boost
56
57
58#if BOOST_BEAST_HEADER_ONLY
59#include <boost/beast/websocket/detail/mask.ipp>
60#endif
61
62
63#endif
64

source code of boost/libs/beast/include/boost/beast/websocket/detail/mask.hpp