1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef NET_QUIC_TEST_TOOLS_SIMPLE_QUIC_FRAMER_H_ 6#define NET_QUIC_TEST_TOOLS_SIMPLE_QUIC_FRAMER_H_ 7 8#include <vector> 9 10#include "base/basictypes.h" 11#include "base/memory/scoped_ptr.h" 12#include "net/quic/quic_framer.h" 13#include "net/quic/quic_protocol.h" 14 15namespace net { 16 17class CryptoHandshakeMessage; 18struct QuicAckFrame; 19class QuicConnection; 20class QuicConnectionVisitorInterface; 21class QuicPacketCreator; 22class ReceiveAlgorithmInterface; 23class SendAlgorithmInterface; 24 25namespace test { 26 27class SimpleFramerVisitor; 28 29// Peer to make public a number of otherwise private QuicFramer methods. 30class SimpleQuicFramer { 31 public: 32 SimpleQuicFramer(); 33 explicit SimpleQuicFramer(const QuicVersionVector& supported_versions); 34 ~SimpleQuicFramer(); 35 36 bool ProcessPacket(const QuicEncryptedPacket& packet); 37 bool ProcessPacket(const QuicPacket& packet); 38 void Reset(); 39 40 const QuicPacketHeader& header() const; 41 size_t num_frames() const; 42 const std::vector<QuicAckFrame>& ack_frames() const; 43 const std::vector<QuicConnectionCloseFrame>& connection_close_frames() const; 44 const std::vector<QuicCongestionFeedbackFrame>& feedback_frames() const; 45 const std::vector<QuicStopWaitingFrame>& stop_waiting_frames() const; 46 const std::vector<QuicPingFrame>& ping_frames() const; 47 const std::vector<QuicGoAwayFrame>& goaway_frames() const; 48 const std::vector<QuicRstStreamFrame>& rst_stream_frames() const; 49 const std::vector<QuicStreamFrame>& stream_frames() const; 50 const QuicFecData& fec_data() const; 51 const QuicVersionNegotiationPacket* version_negotiation_packet() const; 52 const QuicPublicResetPacket* public_reset_packet() const; 53 54 QuicFramer* framer(); 55 56 void SetSupportedVersions(const QuicVersionVector& versions) { 57 framer_.SetSupportedVersions(versions); 58 } 59 60 private: 61 QuicFramer framer_; 62 scoped_ptr<SimpleFramerVisitor> visitor_; 63 DISALLOW_COPY_AND_ASSIGN(SimpleQuicFramer); 64}; 65 66} // namespace test 67 68} // namespace net 69 70#endif // NET_QUIC_TEST_TOOLS_SIMPLE_QUIC_FRAMER_H_ 71