// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_TEST_EMBEDDED_TEST_SERVER_HTTP_CONNECTION_H_ #define NET_TEST_EMBEDDED_TEST_SERVER_HTTP_CONNECTION_H_ #include #include "base/functional/callback_forward.h" #include "base/memory/weak_ptr.h" #include "net/base/completion_once_callback.h" #include "net/test/embedded_test_server/embedded_test_server_connection_listener.h" #include "net/test/embedded_test_server/http_request.h" #include "net/test/embedded_test_server/http_response.h" namespace net { class StreamSocket; namespace test_server { class EmbeddedTestServer; // Wraps the connection socket. Accepts incoming data and sends responses. // If a valid request is parsed, then |callback_| is invoked. class HttpConnection { public: enum class Protocol { kHttp1, kHttp2 }; HttpConnection() = default; virtual ~HttpConnection() = default; HttpConnection(HttpConnection&) = delete; virtual HttpConnection& operator=(HttpConnection&) = delete; // Construct the correct connection based on the server's protocol. static std::unique_ptr Create( std::unique_ptr socket, EmbeddedTestServerConnectionListener* listener, EmbeddedTestServer* server, Protocol protocol); // Notify that the socket is ready to receive data (which may not be // immediately, due to SSL handshake). May call the delegate's HandleRequest() // or CloseConnection() methods, and may call them asynchronously. virtual void OnSocketReady() = 0; // Pass ownership of the socket. This will likely invalidate the connection. virtual std::unique_ptr TakeSocket() = 0; virtual StreamSocket* Socket() = 0; virtual base::WeakPtr GetWeakPtr() = 0; }; } // namespace test_server } // namespace net #endif // NET_TEST_EMBEDDED_TEST_SERVER_HTTP_CONNECTION_H_