summaryrefslogtreecommitdiffstats
path: root/net/quic/quic_framer.h
diff options
context:
space:
mode:
Diffstat (limited to 'net/quic/quic_framer.h')
-rw-r--r--net/quic/quic_framer.h214
1 files changed, 0 insertions, 214 deletions
diff --git a/net/quic/quic_framer.h b/net/quic/quic_framer.h
deleted file mode 100644
index 648ae7d5..0000000
--- a/net/quic/quic_framer.h
+++ /dev/null
@@ -1,214 +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_QUIC_QUIC_FRAMER_H_
-#define NET_QUIC_QUIC_FRAMER_H_
-
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/string_piece.h"
-#include "net/base/ip_endpoint.h"
-#include "net/base/net_export.h"
-#include "net/quic/crypto/quic_decrypter.h"
-#include "net/quic/crypto/quic_encrypter.h"
-
-namespace net {
-
-class QuicEncrypter;
-class QuicDecrypter;
-class QuicFramer;
-class QuicDataReader;
-class QuicDataWriter;
-
-// Class that receives callbacks from the framer when packets
-// are processed.
-class NET_EXPORT_PRIVATE QuicFramerVisitorInterface {
- public:
- virtual ~QuicFramerVisitorInterface() {}
-
- // Called if an error is detected in the QUIC protocol.
- virtual void OnError(QuicFramer* framer) = 0;
-
- // Called when a new packet has been recieved, before it
- // has been validated or processed.
- virtual void OnPacket(const IPEndPoint& peer_address) = 0;
-
- // Called when the header of a packet had been parsed.
- // If OnPacketHeader returns false, framing for this packet will cease.
- virtual bool OnPacketHeader(const QuicPacketHeader& header) = 0;
-
- // Called when a data packet is parsed that is part of an FEC group.
- // |payload| is the non-encrypted FEC protected payload of the packet.
- virtual void OnFecProtectedPayload(base::StringPiece payload) = 0;
-
- // Called when a StreamFragment has been parsed.
- virtual void OnStreamFragment(const QuicStreamFragment& fragment) = 0;
-
- // Called when a AckFragment has been parsed.
- virtual void OnAckFragment(const QuicAckFragment& fragment) = 0;
-
- // Called when a RstStreamFragment has been parsed.
- virtual void OnRstStreamFragment(
- const QuicRstStreamFragment& fragment) = 0;
-
- // Called when a ConnectionCloseFragment has been parsed.
- virtual void OnConnectionCloseFragment(
- const QuicConnectionCloseFragment& fragment) = 0;
-
- // Called when FEC data has been parsed.
- virtual void OnFecData(const QuicFecData& fec) = 0;
-
- // Called when a packet has been completely processed.
- virtual void OnPacketComplete() = 0;
-};
-
-class NET_EXPORT_PRIVATE QuicFecBuilderInterface {
- public:
- virtual ~QuicFecBuilderInterface() {}
-
- // Called when a data packet is constructed that is part of an FEC group.
- // |payload| is the non-encrypted FEC protected payload of the packet.
- virtual void OnBuiltFecProtectedPayload(const QuicPacketHeader& header,
- base::StringPiece payload) = 0;
-};
-
-// Class for parsing and constructing QUIC packets. Has a
-// QuicFramerVisitorInterface that is called when packets are parsed.
-// Also has a QuicFecBuilder that is called when packets are constructed
-// in order to generate FEC data for subsequently building FEC packets.
-class NET_EXPORT_PRIVATE QuicFramer {
- public:
- // Constructs a new framer that will own |decrypter| and |encrypter|.
- QuicFramer(QuicDecrypter* decrypter, QuicEncrypter* encrypter);
-
- virtual ~QuicFramer();
-
- // 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(QuicFramerVisitorInterface* visitor) {
- visitor_ = visitor;
- }
-
- // Set a builder to be called from the framer when building FEC protected
- // packets. If this is called multiple times, only the last builder
- // will be used. The builder need not be set.
- void set_fec_builder(QuicFecBuilderInterface* builder) {
- fec_builder_ = builder;
- }
-
- QuicErrorCode error() const {
- return error_;
- }
-
- // Pass a UDP packet into the framer for parsing.
- // Return true if the packet was processed succesfully. |packet| must be a
- // single, complete UDP packet (not a fragment of a packet). This packet
- // might be null padded past the end of the payload, which will be correctly
- // ignored.
- bool ProcessPacket(const IPEndPoint& client_address,
- const QuicEncryptedPacket& packet);
-
- // Pass a data packet that was revived from FEC data into the framer
- // for parsing.
- // Return true if the packet was processed succesfully. |payload| must be
- // the complete DECRYPTED payload of the revived packet.
- bool ProcessRevivedPacket(const IPEndPoint& client_address,
- const QuicPacketHeader& header,
- base::StringPiece payload);
-
- // Creates a new QuicPacket populated with the fields in |header| and
- // |fragments|. Assigns |*packet| to the address of the new object.
- // Returns true upon success.
- bool ConstructFragementDataPacket(const QuicPacketHeader& header,
- const QuicFragments& fragments,
- QuicPacket** packet);
-
- // Creates a new QuicPacket populated with the fields in |header| and
- // |fec|. Assigns |*packet| to the address of the new object.
- // Returns true upon success.
- bool ConstructFecPacket(const QuicPacketHeader& header,
- const QuicFecData& fec,
- QuicPacket** packet);
-
- // Increments the retransmission count by one, and updates the authentication
- // hash accordingly.
- void IncrementRetransmitCount(QuicPacket* packet);
-
- uint8 GetRetransmitCount(QuicPacket* packet);
-
- void WriteTransmissionTime(QuicTransmissionTime time, QuicPacket* packet);
-
- // Returns a new encrypted packet, owned by the caller.
- QuicEncryptedPacket* EncryptPacket(const QuicPacket& packet);
-
- // Returns the maximum length of plaintext that can be encrypted
- // to ciphertext no larger than |ciphertext_size|.
- size_t GetMaxPlaintextSize(size_t ciphertext_size);
-
- const std::string& detailed_error() { return detailed_error_; }
-
- private:
- bool WritePacketHeader(const QuicPacketHeader& header,
- QuicDataWriter* builder);
-
- bool ProcessPacketHeader(QuicPacketHeader* header,
- const QuicEncryptedPacket& packet);
-
- bool ProcessFragmentData();
- bool ProcessStreamFragment();
- bool ProcessPDUFragment();
- bool ProcessAckFragment(QuicAckFragment* fragment);
- bool ProcessRstStreamFragment();
- bool ProcessConnectionCloseFragment();
-
- bool DecryptPayload(const QuicEncryptedPacket& packet);
-
- // Computes the wire size in bytes of the payload of |fragment|.
- size_t ComputeFragmentPayloadLength(const QuicFragment& fragment);
-
- bool AppendStreamFragmentPayload(
- const QuicStreamFragment& fragment,
- QuicDataWriter* builder);
- bool AppendAckFragmentPayload(
- const QuicAckFragment& fragment,
- QuicDataWriter* builder);
- bool AppendRstStreamFragmentPayload(
- const QuicRstStreamFragment& fragment,
- QuicDataWriter* builder);
- bool AppendConnectionCloseFragmentPayload(
- const QuicConnectionCloseFragment& fragment,
- QuicDataWriter* builder);
- bool RaiseError(QuicErrorCode error);
-
- void set_error(QuicErrorCode error) {
- error_ = error;
- }
-
- void set_detailed_error(const char* error) {
- detailed_error_ = error;
- }
-
- std::string detailed_error_;
- scoped_ptr<QuicDataReader> reader_;
- QuicFramerVisitorInterface* visitor_;
- QuicFecBuilderInterface* fec_builder_;
- QuicErrorCode error_;
- // Buffer containing decrypted payload data during parsing.
- scoped_ptr<QuicData> decrypted_;
- // Decrypter used to decrypt packets during parsing.
- scoped_ptr<QuicDecrypter> decrypter_;
- // Encrypter used to encrypt packets via EncryptPacket().
- scoped_ptr<QuicEncrypter> encrypter_;
-
- DISALLOW_COPY_AND_ASSIGN(QuicFramer);
-};
-
-} // namespace net
-
-#endif // NET_QUIC_QUIC_FRAMER_H_