blob: 27efbcaf0acc5a03efd56c2c05482f95f63fbab3 [file] [log] [blame] [edit]
// Copyright 2024 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "system-proxy/curl_scopers.h"
#include <memory>
#include <string>
#include <utility>
#include <base/files/scoped_file.h>
#include <base/logging.h>
#include <base/strings/stringprintf.h>
namespace system_proxy {
CurlForwarder::CurlForwarder(
std::unique_ptr<net_base::SocketForwarder> forwarder,
ScopedCurlEasyhandle server_handle)
: forwarder_(std::move(forwarder)),
server_handle_(std::move(server_handle)) {}
CurlForwarder::~CurlForwarder() = default;
// static
std::unique_ptr<CurlForwarder> CurlForwarder::Create(
std::unique_ptr<net_base::Socket> client_socket,
std::unique_ptr<net_base::Socket> server_socket,
ScopedCurlEasyhandle server_handle) {
std::string name =
base::StringPrintf("%d-%d", client_socket->Get(), server_socket->Get());
auto fwd = std::make_unique<net_base::SocketForwarder>(
name, std::move(client_socket), std::move(server_socket));
fwd->Start();
return std::unique_ptr<CurlForwarder>(
new CurlForwarder(std::move(fwd), std::move(server_handle)));
}
bool CurlForwarder::IsFinished() const {
return forwarder_->HasBeenStarted() && !forwarder_->IsRunning();
}
} // namespace system_proxy