blob: eefaae3f51db31a28f3a2b317b8deaaf3c9ba728 [file] [log] [blame]
// Copyright (c) 2016 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.
#include "net/quic/crypto/crypto_handshake_message.h"
#include "net/quic/quic_protocol.h"
namespace net {
// A utility for extracting QUIC Client Hello messages from packets,
// without needs to spin up a full QuicSession.
class ChloExtractor {
class Delegate {
virtual ~Delegate() {}
// Called when a CHLO message is found in the packets.
virtual void OnChlo(QuicVersion version,
QuicConnectionId connection_id,
const CryptoHandshakeMessage& chlo) = 0;
// Extracts a CHLO message from |packet| and invokes the OnChlo method
// of |delegate|. Return true if a CHLO message was found, and false
// otherwise.
static bool Extract(const QuicEncryptedPacket& packet,
const QuicVersionVector& versions,
Delegate* delegate);
ChloExtractor(ChloExtractor&) = delete;
ChloExtractor operator=(const ChloExtractor&) = delete;
} // namespace net