#include "net/websockets/websocket_frame.h"
#include <stddef.h>
#include <string.h>
#include <ostream>
#include "base/check.h"
#include "base/check_op.h"
#include "base/containers/span.h"
#include "base/containers/span_writer.h"
#include "base/numerics/safe_conversions.h"
#include "base/rand_util.h"
#include "base/ranges/algorithm.h"
#include "build/build_config.h"
#include "net/base/net_errors.h"
namespace net {
namespace {
#if defined(COMPILER_GCC) && \
(defined(ARCH_CPU_X86_FAMILY) || defined(ARCH_CPU_ARM_FAMILY))
PackedMaskType __attribute__((vector_size(16)));
#else
using PackedMaskType = size_t;
#endif
constexpr uint8_t kFinalBit = …;
constexpr uint8_t kReserved1Bit = …;
constexpr uint8_t kReserved2Bit = …;
constexpr uint8_t kReserved3Bit = …;
constexpr uint8_t kOpCodeMask = …;
constexpr uint8_t kMaskBit = …;
constexpr uint64_t kMaxPayloadLengthWithoutExtendedLengthField = …;
constexpr uint64_t kPayloadLengthWithTwoByteExtendedLengthField = …;
constexpr uint64_t kPayloadLengthWithEightByteExtendedLengthField = …;
inline void MaskWebSocketFramePayloadByBytes(
const WebSocketMaskingKey& masking_key,
size_t masking_key_offset,
const base::span<uint8_t> payload) { … }
}
std::unique_ptr<WebSocketFrameHeader> WebSocketFrameHeader::Clone() const { … }
void WebSocketFrameHeader::CopyFrom(const WebSocketFrameHeader& source) { … }
WebSocketFrame::WebSocketFrame(WebSocketFrameHeader::OpCode opcode)
: … { … }
WebSocketFrame::~WebSocketFrame() = default;
WebSocketFrameChunk::WebSocketFrameChunk() = default;
WebSocketFrameChunk::~WebSocketFrameChunk() = default;
size_t GetWebSocketFrameHeaderSize(const WebSocketFrameHeader& header) { … }
int WriteWebSocketFrameHeader(const WebSocketFrameHeader& header,
const WebSocketMaskingKey* masking_key,
base::span<uint8_t> buffer) { … }
WebSocketMaskingKey GenerateWebSocketMaskingKey() { … }
void MaskWebSocketFramePayload(const WebSocketMaskingKey& masking_key,
uint64_t frame_offset,
base::span<uint8_t> data) { … }
}