Index: net/websockets/websocket_frame.h |
diff --git a/net/websockets/websocket_frame.h b/net/websockets/websocket_frame.h |
deleted file mode 100644 |
index c9d8b976926c5d2ad4e9ec7cd8b4d53e50a11067..0000000000000000000000000000000000000000 |
--- a/net/websockets/websocket_frame.h |
+++ /dev/null |
@@ -1,195 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef NET_WEBSOCKETS_WEBSOCKET_FRAME_H_ |
-#define NET_WEBSOCKETS_WEBSOCKET_FRAME_H_ |
- |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "net/base/net_export.h" |
- |
-namespace net { |
- |
-class IOBuffer; |
-class IOBufferWithSize; |
- |
-// Represents a WebSocket frame header. |
-// |
-// Members of this class correspond to each element in WebSocket frame header |
-// (see http://tools.ietf.org/html/rfc6455#section-5.2). |
-struct NET_EXPORT WebSocketFrameHeader { |
- typedef int OpCode; |
- |
- // Originally these constants were static const int, but to make it possible |
- // to use them in a switch statement they were changed to an enum. |
- enum OpCodeEnum { |
- kOpCodeContinuation = 0x0, |
- kOpCodeText = 0x1, |
- kOpCodeBinary = 0x2, |
- kOpCodeDataUnused = 0x3, |
- kOpCodeClose = 0x8, |
- kOpCodePing = 0x9, |
- kOpCodePong = 0xA, |
- kOpCodeControlUnused = 0xB, |
- }; |
- |
- // Return true if |opcode| is one of the data opcodes known to this |
- // implementation. |
- static bool IsKnownDataOpCode(OpCode opcode) { |
- return opcode == kOpCodeContinuation || opcode == kOpCodeText || |
- opcode == kOpCodeBinary; |
- } |
- |
- // Return true if |opcode| is one of the control opcodes known to this |
- // implementation. |
- static bool IsKnownControlOpCode(OpCode opcode) { |
- return opcode == kOpCodeClose || opcode == kOpCodePing || |
- opcode == kOpCodePong; |
- } |
- |
- // These values must be a compile-time constant. "enum hack" is used here |
- // to make MSVC happy. |
- enum { |
- kBaseHeaderSize = 2, |
- kMaximumExtendedLengthSize = 8, |
- kMaskingKeyLength = 4 |
- }; |
- |
- // Constructor to avoid a lot of repetitive initialisation. |
- explicit WebSocketFrameHeader(OpCode opCode) |
- : final(false), |
- reserved1(false), |
- reserved2(false), |
- reserved3(false), |
- opcode(opCode), |
- masked(false), |
- payload_length(0) {} |
- |
- // Create a clone of this object on the heap. |
- scoped_ptr<WebSocketFrameHeader> Clone() const; |
- |
- // Overwrite this object with the fields from |source|. |
- void CopyFrom(const WebSocketFrameHeader& source); |
- |
- // Members below correspond to each item in WebSocket frame header. |
- // See <http://tools.ietf.org/html/rfc6455#section-5.2> for details. |
- bool final; |
- bool reserved1; |
- bool reserved2; |
- bool reserved3; |
- OpCode opcode; |
- bool masked; |
- uint64 payload_length; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(WebSocketFrameHeader); |
-}; |
- |
-// Contains an entire WebSocket frame including payload. This is used by APIs |
-// that are not concerned about retaining the original frame boundaries (because |
-// frames may need to be split in order for the data to fit in memory). |
-struct NET_EXPORT_PRIVATE WebSocketFrame { |
- // A frame must always have an opcode, so this parameter is compulsory. |
- explicit WebSocketFrame(WebSocketFrameHeader::OpCode opcode); |
- ~WebSocketFrame(); |
- |
- // |header| is always present. |
- WebSocketFrameHeader header; |
- |
- // |data| is always unmasked even if the frame is masked. The size of |data| |
- // is given by |header.payload_length|. |
- scoped_refptr<IOBuffer> data; |
-}; |
- |
-// Structure describing one chunk of a WebSocket frame. |
-// |
-// The payload of a WebSocket frame may be divided into multiple chunks. |
-// You need to look at |final_chunk| member variable to detect the end of a |
-// series of chunk objects of a WebSocket frame. |
-// |
-// Frame dissection is necessary to handle frames that are too large to store in |
-// the browser memory without losing information about the frame boundaries. In |
-// practice, most code does not need to worry about the original frame |
-// boundaries and can use the WebSocketFrame type declared above. |
-// |
-// Users of this struct should treat WebSocket frames as a data stream; it's |
-// important to keep the frame data flowing, especially in the browser process. |
-// Users should not let the data stuck somewhere in the pipeline. |
-// |
-// This struct is used for reading WebSocket frame data (created by |
-// WebSocketFrameParser). To construct WebSocket frames, use functions below. |
-struct NET_EXPORT WebSocketFrameChunk { |
- WebSocketFrameChunk(); |
- ~WebSocketFrameChunk(); |
- |
- // Non-null |header| is provided only if this chunk is the first part of |
- // a series of chunks. |
- scoped_ptr<WebSocketFrameHeader> header; |
- |
- // Indicates this part is the last chunk of a frame. |
- bool final_chunk; |
- |
- // |data| is always unmasked even if the frame is masked. |data| might be |
- // null in the first chunk. |
- scoped_refptr<IOBufferWithSize> data; |
-}; |
- |
-// Contains four-byte data representing "masking key" of WebSocket frames. |
-struct WebSocketMaskingKey { |
- char key[WebSocketFrameHeader::kMaskingKeyLength]; |
-}; |
- |
-// Returns the size of WebSocket frame header. The size of WebSocket frame |
-// header varies from 2 bytes to 14 bytes depending on the payload length |
-// and maskedness. |
-NET_EXPORT int GetWebSocketFrameHeaderSize(const WebSocketFrameHeader& header); |
- |
-// Writes wire format of a WebSocket frame header into |output|, and returns |
-// the number of bytes written. |
-// |
-// WebSocket frame format is defined at: |
-// <http://tools.ietf.org/html/rfc6455#section-5.2>. This function writes |
-// everything but payload data in a WebSocket frame to |buffer|. |
-// |
-// If |header->masked| is true, |masking_key| must point to a valid |
-// WebSocketMaskingKey object containing the masking key for that frame |
-// (possibly generated by GenerateWebSocketMaskingKey() function below). |
-// Otherwise, |masking_key| must be NULL. |
-// |
-// |buffer| should have enough size to contain the frame header. |
-// GetWebSocketFrameHeaderSize() can be used to know the size of header |
-// beforehand. If the size of |buffer| is insufficient, this function returns |
-// ERR_INVALID_ARGUMENT and does not write any data to |buffer|. |
-NET_EXPORT int WriteWebSocketFrameHeader(const WebSocketFrameHeader& header, |
- const WebSocketMaskingKey* masking_key, |
- char* buffer, |
- int buffer_size); |
- |
-// Generates a masking key suitable for use in a new WebSocket frame. |
-NET_EXPORT WebSocketMaskingKey GenerateWebSocketMaskingKey(); |
- |
-// Masks WebSocket frame payload. |
-// |
-// A client must mask every WebSocket frame by XOR'ing the frame payload |
-// with four-byte random data (masking key). This function applies the masking |
-// to the given payload data. |
-// |
-// This function masks |data| with |masking_key|, assuming |data| is partial |
-// data starting from |frame_offset| bytes from the beginning of the payload |
-// data. |
-// |
-// Since frame masking is a reversible operation, this function can also be |
-// used for unmasking a WebSocket frame. |
-NET_EXPORT void MaskWebSocketFramePayload( |
- const WebSocketMaskingKey& masking_key, |
- uint64 frame_offset, |
- char* data, |
- int data_size); |
- |
-} // namespace net |
- |
-#endif // NET_WEBSOCKETS_WEBSOCKET_FRAME_H_ |