| // 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 QUICHE_QUIC_TOOLS_QUIC_TOY_SERVER_H_ | |
| #define QUICHE_QUIC_TOOLS_QUIC_TOY_SERVER_H_ | |
| #include "quic/core/crypto/proof_source.h" | |
| #include "quic/tools/quic_simple_server_backend.h" | |
| #include "quic/tools/quic_spdy_server_base.h" | |
| namespace quic { | |
| // A binary wrapper for QuicServer. It listens forever on --port | |
| // (default 6121) until it's killed or ctrl-cd to death. | |
| class QuicToyServer { | |
| public: | |
| // A factory for creating QuicSpdyServerBase instances. | |
| class ServerFactory { | |
| public: | |
| virtual ~ServerFactory() = default; | |
| // Creates a QuicSpdyServerBase instance using |backend| for generating | |
| // responses, and |proof_source| for certificates. | |
| virtual std::unique_ptr<QuicSpdyServerBase> CreateServer( | |
| QuicSimpleServerBackend* backend, | |
| std::unique_ptr<ProofSource> proof_source, | |
| const ParsedQuicVersionVector& supported_versions) = 0; | |
| }; | |
| // A facotry for creating QuicSimpleServerBackend instances. | |
| class BackendFactory { | |
| public: | |
| virtual ~BackendFactory() = default; | |
| // Creates a new backend. | |
| virtual std::unique_ptr<QuicSimpleServerBackend> CreateBackend() = 0; | |
| }; | |
| // A factory for creating QuicMemoryCacheBackend instances, configured | |
| // to load files from disk, if necessary. | |
| class MemoryCacheBackendFactory : public BackendFactory { | |
| public: | |
| std::unique_ptr<quic::QuicSimpleServerBackend> CreateBackend() override; | |
| }; | |
| // Constructs a new toy server that will use |server_factory| to create the | |
| // actual QuicSpdyServerBase instance. | |
| QuicToyServer(BackendFactory* backend_factory, ServerFactory* server_factory); | |
| // Connects to the QUIC server based on the various flags defined in the | |
| // .cc file, listends for requests and sends the responses. Returns 1 on | |
| // failure and does not return otherwise. | |
| int Start(); | |
| private: | |
| BackendFactory* backend_factory_; // Unowned. | |
| ServerFactory* server_factory_; // Unowned. | |
| }; | |
| } // namespace quic | |
| #endif // QUICHE_QUIC_TOOLS_QUIC_TOY_SERVER_H_ |