chromium/services/network/public/cpp/transferable_socket.h

// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SERVICES_NETWORK_PUBLIC_CPP_TRANSFERABLE_SOCKET_H_
#define SERVICES_NETWORK_PUBLIC_CPP_TRANSFERABLE_SOCKET_H_

#include "base/component_export.h"
#include "base/dcheck_is_on.h"
#include "base/process/process.h"
#include "mojo/public/cpp/bindings/struct_traits.h"
#include "mojo/public/cpp/platform/platform_handle.h"
#include "net/base/address_family.h"
#include "net/socket/datagram_socket.h"
#include "net/socket/socket_descriptor.h"
#include "net/socket/tcp_socket.h"
#include "net/socket/udp_socket.h"

namespace network {
class TransferableSocket;
}
namespace network::mojom {
class TransferableSocketDataView;
}

namespace mojo {
template <>
struct StructTraits<network::mojom::TransferableSocketDataView,
                    network::TransferableSocket>;
}

namespace network {

class COMPONENT_EXPORT(NETWORK_CPP_BASE) TransferableSocket {};

}  // namespace network

#endif  // SERVICES_NETWORK_PUBLIC_CPP_TRANSFERABLE_SOCKET_H_