summaryrefslogtreecommitdiffstats
path: root/net/flip/flip_framer.h
diff options
context:
space:
mode:
authormbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-06 21:44:32 +0000
committermbelshe@chromium.org <mbelshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-06 21:44:32 +0000
commitdab9c7d4a7c5d4c5157043ee4db2d792b8a2f3b6 (patch)
tree2a91eee8aaf55502ed8e3a9b2b5f9e5909237a5d /net/flip/flip_framer.h
parentfc524909b7165d44b8b4fc92d7ba59ae7f8cb2df (diff)
downloadchromium_src-dab9c7d4a7c5d4c5157043ee4db2d792b8a2f3b6.zip
chromium_src-dab9c7d4a7c5d4c5157043ee4db2d792b8a2f3b6.tar.gz
chromium_src-dab9c7d4a7c5d4c5157043ee4db2d792b8a2f3b6.tar.bz2
Rename all files from flip* to spdy*.
I haven't yet renamed the classes. BUG=30747 TEST=none Review URL: http://codereview.chromium.org/582001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38315 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/flip/flip_framer.h')
-rw-r--r--net/flip/flip_framer.h260
1 files changed, 0 insertions, 260 deletions
diff --git a/net/flip/flip_framer.h b/net/flip/flip_framer.h
deleted file mode 100644
index b333176..0000000
--- a/net/flip/flip_framer.h
+++ /dev/null
@@ -1,260 +0,0 @@
-// Copyright (c) 2009 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_FLIP_FLIP_FRAMER_H_
-#define NET_FLIP_FLIP_FRAMER_H_
-
-#ifdef _WIN32
-#include <winsock2.h>
-#else
-#include <arpa/inet.h>
-#endif
-#include <map>
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/logging.h"
-#include "base/scoped_ptr.h"
-#include "testing/gtest/include/gtest/gtest_prod.h"
-#include "flip_protocol.h" // cross-google3 directory naming.
-
-typedef struct z_stream_s z_stream; // Forward declaration for zlib.
-
-namespace net {
-class FlipNetworkTransactionTest;
-class HttpNetworkLayer;
-}
-
-namespace flip {
-
-class FlipFramer;
-class FlipFramerTest;
-
-namespace test {
-class TestFlipVisitor;
-void FramerSetEnableCompressionHelper(FlipFramer* framer, bool compress);
-} // namespace test
-
-// A datastructure for holding a set of headers from either a
-// SYN_STREAM or SYN_REPLY frame.
-typedef std::map<std::string, std::string> FlipHeaderBlock;
-
-// FlipFramerVisitorInterface is a set of callbacks for the FlipFramer.
-// Implement this interface to receive event callbacks as frames are
-// decoded from the framer.
-class FlipFramerVisitorInterface {
- public:
- virtual ~FlipFramerVisitorInterface() {}
-
- // Called if an error is detected in the FlipFrame protocol.
- virtual void OnError(FlipFramer* framer) = 0;
-
- // Called when a Control Frame is received.
- virtual void OnControl(const FlipControlFrame* frame) = 0;
-
- // Called when data is received.
- // |stream_id| The stream receiving data.
- // |data| A buffer containing the data received.
- // |len| The length of the data buffer.
- // When the other side has finished sending data on this stream,
- // this method will be called with a zero-length buffer.
- virtual void OnStreamFrameData(flip::FlipStreamId stream_id,
- const char* data,
- size_t len) = 0;
-};
-
-class FlipFramer {
- public:
- // Flip states.
- // TODO(mbelshe): Can we move these into the implementation
- // and avoid exposing through the header. (Needed for test)
- enum FlipState {
- FLIP_ERROR,
- FLIP_DONE,
- FLIP_RESET,
- FLIP_AUTO_RESET,
- FLIP_READING_COMMON_HEADER,
- FLIP_INTERPRET_CONTROL_FRAME_COMMON_HEADER,
- FLIP_CONTROL_FRAME_PAYLOAD,
- FLIP_IGNORE_REMAINING_PAYLOAD,
- FLIP_FORWARD_STREAM_FRAME
- };
-
- // Flip error codes.
- enum FlipError {
- FLIP_NO_ERROR,
- FLIP_UNKNOWN_CONTROL_TYPE, // Control frame is an unknown type.
- FLIP_INVALID_CONTROL_FRAME, // Control frame is mal-formatted.
- FLIP_CONTROL_PAYLOAD_TOO_LARGE, // Control frame payload was too large.
- FLIP_ZLIB_INIT_FAILURE, // The Zlib library could not initialize.
- FLIP_UNSUPPORTED_VERSION, // Control frame has unsupported version.
- FLIP_DECOMPRESS_FAILURE, // There was an error decompressing.
- };
-
- // Create a new Framer.
- FlipFramer();
- virtual ~FlipFramer();
-
- // Set callbacks to be called from the framer. A visitor must be set, or
- // else the framer will likely crash. It is acceptable for the visitor
- // to do nothing. If this is called multiple times, only the last visitor
- // will be used.
- void set_visitor(FlipFramerVisitorInterface* visitor) {
- visitor_ = visitor;
- }
-
- // Pass data into the framer for parsing.
- // Returns the number of bytes consumed. It is safe to pass more bytes in
- // than may be consumed.
- size_t ProcessInput(const char* data, size_t len);
-
- // Resets the framer state after a frame has been successfully decoded.
- // TODO(mbelshe): can we make this private?
- void Reset();
-
- // Check the state of the framer.
- FlipError error_code() const { return error_code_; }
- FlipState state() const { return state_; }
-
- bool MessageFullyRead() {
- return state_ == FLIP_DONE || state_ == FLIP_AUTO_RESET;
- }
- bool HasError() { return state_ == FLIP_ERROR; }
-
- // Further parsing utilities.
- // Given a control frame, parse out a FlipHeaderBlock. Only
- // valid for SYN_STREAM and SYN_REPLY frames.
- // Returns true if successfully parsed, false otherwise.
- bool ParseHeaderBlock(const FlipFrame* frame, FlipHeaderBlock* block);
-
- // Create a FlipSynStreamControlFrame.
- // |stream_id| is the stream for this frame.
- // |priority| is the priority (0-3) for this frame.
- // |flags| is the flags to use with the data.
- // To mark this frame as the last frame, enable CONTROL_FLAG_FIN.
- // |compressed| specifies whether the frame should be compressed.
- // |headers| is the header block to include in the frame.
- FlipSynStreamControlFrame* CreateSynStream(FlipStreamId stream_id,
- int priority,
- FlipControlFlags flags,
- bool compressed,
- FlipHeaderBlock* headers);
-
- static FlipFinStreamControlFrame* CreateFinStream(FlipStreamId stream_id,
- int status);
-
- // Create a FlipSynReplyControlFrame.
- // |stream_id| is the stream for this frame.
- // |flags| is the flags to use with the data.
- // To mark this frame as the last frame, enable CONTROL_FLAG_FIN.
- // |compressed| specifies whether the frame should be compressed.
- // |headers| is the header block to include in the frame.
- FlipSynReplyControlFrame* CreateSynReply(FlipStreamId stream_id,
- FlipControlFlags flags,
- bool compressed,
- FlipHeaderBlock* headers);
-
- // Create a data frame.
- // |stream_id| is the stream for this frame
- // |data| is the data to be included in the frame.
- // |len| is the length of the data
- // |flags| is the flags to use with the data.
- // To create a compressed frame, enable DATA_FLAG_COMPRESSED.
- // To mark this frame as the last data frame, enable DATA_FLAG_FIN.
- FlipDataFrame* CreateDataFrame(FlipStreamId stream_id, const char* data,
- uint32 len, FlipDataFlags flags);
-
- static FlipControlFrame* CreateNopFrame();
-
- // NOTES about frame compression.
- // We want flip to compress headers across the entire session. As long as
- // the session is over TCP, frames are sent serially. The client & server
- // can each compress frames in the same order and then compress them in that
- // order, and the remote can do the reverse. However, we ultimately want
- // the creation of frames to be less sensitive to order so that they can be
- // placed over a UDP based protocol and yet still benefit from some
- // compression. We don't know of any good compression protocol which does
- // not build its state in a serial (stream based) manner.... For now, we're
- // using zlib anyway.
-
- // Compresses a FlipFrame.
- // On success, returns a new FlipFrame with the payload compressed.
- // Compression state is maintained as part of the FlipFramer.
- // Returned frame must be freed with free().
- // On failure, returns NULL.
- FlipFrame* CompressFrame(const FlipFrame* frame);
-
- // Decompresses a FlipFrame.
- // On success, returns a new FlipFrame with the payload decompressed.
- // Compression state is maintained as part of the FlipFramer.
- // Returned frame must be freed with free().
- // On failure, returns NULL.
- FlipFrame* DecompressFrame(const FlipFrame* frame);
-
- // Create a copy of a frame.
- FlipFrame* DuplicateFrame(const FlipFrame* frame);
-
- // For debugging.
- static const char* StateToString(int state);
- static const char* ErrorCodeToString(int error_code);
-
- protected:
- FRIEND_TEST(FlipFramerTest, HeaderBlockBarfsOnOutOfOrderHeaders);
- friend class net::FlipNetworkTransactionTest;
- friend class net::HttpNetworkLayer; // This is temporary for the server.
- friend class test::TestFlipVisitor;
- friend void test::FramerSetEnableCompressionHelper(FlipFramer* framer,
- bool compress);
-
- // For ease of testing we can tweak compression on/off.
- void set_enable_compression(bool value);
- static void set_enable_compression_default(bool value);
-
- private:
- // Internal breakout from ProcessInput. Returns the number of bytes
- // consumed from the data.
- size_t ProcessCommonHeader(const char* data, size_t len);
- void ProcessControlFrameHeader();
- size_t ProcessControlFramePayload(const char* data, size_t len);
- size_t ProcessDataFramePayload(const char* data, size_t len);
-
- // Initialize the ZLib state.
- bool InitializeCompressor();
- bool InitializeDecompressor();
-
- // Not used (yet)
- size_t BytesSafeToRead() const;
-
- // Set the error code.
- void set_error(FlipError error);
-
- // Expands the control frame buffer to accomodate a particular payload size.
- void ExpandControlFrameBuffer(size_t size);
-
- // Given a frame, breakdown the variable payload length, the static header
- // header length, and variable payload pointer.
- bool GetFrameBoundaries(const FlipFrame* frame, int* payload_length,
- int* header_length, const char** payload) const;
-
- FlipState state_;
- FlipError error_code_;
- size_t remaining_payload_;
- size_t remaining_control_payload_;
-
- char* current_frame_buffer_;
- size_t current_frame_len_; // Number of bytes read into the current_frame_.
- size_t current_frame_capacity_;
-
- bool enable_compression_;
- scoped_ptr<z_stream> compressor_;
- scoped_ptr<z_stream> decompressor_;
- FlipFramerVisitorInterface* visitor_;
-
- static bool compression_default_;
-};
-
-} // namespace flip
-
-#endif // NET_FLIP_FLIP_FRAMER_H_
-