Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Unified Diff: net/server/web_socket_frame.h

Issue 7482041: DevTools: no way to remote debug using ToT build. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments addressed Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/server/web_socket_frame.h
diff --git a/net/server/web_socket_frame.h b/net/server/web_socket_frame.h
new file mode 100644
index 0000000000000000000000000000000000000000..2b5a37369be78ba6687aebdb96600b9f100403b2
--- /dev/null
+++ b/net/server/web_socket_frame.h
@@ -0,0 +1,77 @@
+// Copyright (c) 2011 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_SERVER_WEB_SOCKET_FRAME_H_
+#define NET_SERVER_WEB_SOCKET_FRAME_H_
+#pragma once
+
+#include "base/basictypes.h"
+
+#include <vector>
+
+namespace net {
+
+class WebSocketFrame {
+ static const unsigned char kFinalBit;
+ static const unsigned char kReserved1Bit;
+ static const unsigned char kReserved2Bit;
+ static const unsigned char kReserved3Bit;
+ static const unsigned char kOpCodeMask;
+ static const unsigned char kMaskBit;
+ static const unsigned char kPayloadLengthMask;
+
+ static const size_t kMaxSingleBytePayloadLength;
+ static const size_t kTwoBytePayloadLengthField;
+ static const size_t kEightBytePayloadLengthField;
+ static const size_t kMaskingKeyWidthInBytes;
+
+ public:
+ // Hybi-10 opcodes.
+ typedef unsigned int OpCode;
+ static const OpCode kOpCodeContinuation;
+ static const OpCode kOpCodeText;
+ static const OpCode kOpCodeBinary;
+ static const OpCode kOpCodeClose;
+ static const OpCode kOpCodePing;
+ static const OpCode kOpCodePong;
+
+ enum ParseResult {
+ FrameOK,
+ FrameIncomplete,
+ FrameError
+ };
+
+ OpCode op_code_;
+ bool final_;
+ bool reserved1_;
+ bool reserved2_;
+ bool reserved3_;
+ bool masked_;
+ const char* payload_;
+ size_t payload_length_;
+ const char* frame_end_;
+
+ bool isNonControlOpCode() const {
+ return op_code_ == kOpCodeContinuation ||
+ op_code_ == kOpCodeText ||
+ op_code_ == kOpCodeBinary;
+ }
+ bool isControlOpCode() const {
+ return op_code_ == kOpCodeClose ||
+ op_code_ == kOpCodePing ||
+ op_code_ == kOpCodePong;
+ }
+ bool isReservedOpCode() const {
+ return !isNonControlOpCode() && !isControlOpCode();
+ }
+
+ ParseResult DecodeFrame(const char* data, size_t data_length);
+ std::vector<char> EncodeFrame(OpCode op_code,
+ const char* data,
+ size_t data_length);
+};
+
+} // namespace net
+
+#endif // NET_SERVER_WEB_SOCKET_FRAME_H_

Powered by Google App Engine
This is Rietveld 408576698