59 lines
1.9 KiB
C++
59 lines
1.9 KiB
C++
// 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 <memory>
|
|
|
|
#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<HttpConnection> Create(
|
|
std::unique_ptr<StreamSocket> 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<StreamSocket> TakeSocket() = 0;
|
|
|
|
virtual StreamSocket* Socket() = 0;
|
|
virtual base::WeakPtr<HttpConnection> GetWeakPtr() = 0;
|
|
};
|
|
|
|
} // namespace test_server
|
|
} // namespace net
|
|
|
|
#endif // NET_TEST_EMBEDDED_TEST_SERVER_HTTP_CONNECTION_H_
|