blob: 176ad047b8133d8c575379cb82b1299ccb88cb02 [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/core/crypto/crypto_handshake_message.h"
#include "net/quic/core/quic_packets.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(const ChloExtractor&) = delete;
ChloExtractor operator=(const ChloExtractor&) = delete;
} // namespace net