blob: 76394825388276231c4579fec1620269a31823c1 [file] [log] [blame]
// 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.
// A toy client, which connects to a specified port and sends QUIC
// requests to that endpoint.
#ifndef QUICHE_QUIC_TOOLS_QUIC_TOY_CLIENT_H_
#define QUICHE_QUIC_TOOLS_QUIC_TOY_CLIENT_H_
#include "quiche/quic/tools/quic_spdy_client_base.h"
namespace quic {
class QuicToyClient {
public:
class ClientFactory {
public:
virtual ~ClientFactory() = default;
// Creates a new client configured to connect to |host_for_lookup:port|
// supporting |versions|, using |host_for_handshake| for handshake and
// |verifier| to verify proofs.
virtual std::unique_ptr<QuicSpdyClientBase> CreateClient(
std::string host_for_handshake, std::string host_for_lookup,
// AF_INET, AF_INET6, or AF_UNSPEC(=don't care).
int address_family_for_lookup, uint16_t port,
ParsedQuicVersionVector versions, const QuicConfig& config,
std::unique_ptr<ProofVerifier> verifier,
std::unique_ptr<SessionCache> session_cache) = 0;
};
// Constructs a new toy client that will use |client_factory| to create the
// actual QuicSpdyClientBase instance.
QuicToyClient(ClientFactory* client_factory);
// Connects to the QUIC server based on the various flags defined in the
// .cc file, sends requests and prints the responses. Returns 0 on success
// and non-zero otherwise.
int SendRequestsAndPrintResponses(std::vector<std::string> urls);
private:
ClientFactory* client_factory_; // Unowned.
};
} // namespace quic
#endif // QUICHE_QUIC_TOOLS_QUIC_TOY_CLIENT_H_