#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "net/server/web_socket_encoder.h"
#include <limits>
#include <string_view>
#include <utility>
#include "base/check.h"
#include "base/memory/ptr_util.h"
#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h"
#include "net/base/io_buffer.h"
#include "net/base/net_export.h"
#include "net/websockets/websocket_deflate_parameters.h"
#include "net/websockets/websocket_extension.h"
#include "net/websockets/websocket_extension_parser.h"
#include "net/websockets/websocket_frame.h"
namespace net {
NET_EXPORT
const char WebSocketEncoder::kClientExtensions[] = …;
namespace {
const int kInflaterChunkSize = …;
const unsigned char kFinalBit = …;
const unsigned char kReserved1Bit = …;
const unsigned char kReserved2Bit = …;
const unsigned char kReserved3Bit = …;
const unsigned char kOpCodeMask = …;
const unsigned char kMaskBit = …;
const unsigned char kPayloadLengthMask = …;
const size_t kMaxSingleBytePayloadLength = …;
const size_t kTwoBytePayloadLengthField = …;
const size_t kEightBytePayloadLengthField = …;
const size_t kMaskingKeyWidthInBytes = …;
WebSocketParseResult DecodeFrameHybi17(std::string_view frame,
bool client_frame,
int* bytes_consumed,
std::string* output,
bool* compressed) { … }
void EncodeFrameHybi17(std::string_view message,
int masking_key,
bool compressed,
WebSocketFrameHeader::OpCodeEnum op_code,
std::string* output) { … }
}
std::unique_ptr<WebSocketEncoder> WebSocketEncoder::CreateServer() { … }
std::unique_ptr<WebSocketEncoder> WebSocketEncoder::CreateServer(
const std::string& extensions,
WebSocketDeflateParameters* deflate_parameters) { … }
std::unique_ptr<WebSocketEncoder> WebSocketEncoder::CreateClient(
const std::string& response_extensions) { … }
WebSocketEncoder::WebSocketEncoder(Type type,
std::unique_ptr<WebSocketDeflater> deflater,
std::unique_ptr<WebSocketInflater> inflater)
: … { … }
WebSocketEncoder::~WebSocketEncoder() = default;
WebSocketParseResult WebSocketEncoder::DecodeFrame(std::string_view frame,
int* bytes_consumed,
std::string* output) { … }
void WebSocketEncoder::EncodeTextFrame(std::string_view frame,
int masking_key,
std::string* output) { … }
void WebSocketEncoder::EncodeCloseFrame(std::string_view frame,
int masking_key,
std::string* output) { … }
void WebSocketEncoder::EncodePongFrame(std::string_view frame,
int masking_key,
std::string* output) { … }
bool WebSocketEncoder::Inflate(std::string* message) { … }
bool WebSocketEncoder::Deflate(std::string_view message, std::string* output) { … }
}