2025-11-30 12:18:43 -03:00
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2022, Lucas Chollet <lucas.chollet@free.fr>
|
|
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <AK/Noncopyable.h>
|
2026-06-13 14:46:15 -03:00
|
|
|
#include <AK/StdLibExtras.h>
|
2025-11-30 12:18:43 -03:00
|
|
|
#include <AK/Vector.h>
|
|
|
|
|
|
|
|
|
|
struct addrinfo;
|
|
|
|
|
|
|
|
|
|
namespace Core::System {
|
|
|
|
|
|
|
|
|
|
class AddressInfoVector {
|
|
|
|
|
AK_MAKE_NONCOPYABLE(AddressInfoVector);
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
AddressInfoVector(Vector<struct addrinfo> addresses, struct addrinfo* ptr);
|
2026-06-13 14:46:15 -03:00
|
|
|
AddressInfoVector(AddressInfoVector&& other);
|
2025-11-30 12:18:43 -03:00
|
|
|
~AddressInfoVector();
|
|
|
|
|
|
2026-06-13 14:46:15 -03:00
|
|
|
AddressInfoVector& operator=(AddressInfoVector&& other)
|
|
|
|
|
{
|
|
|
|
|
AddressInfoVector temporary { move(other) };
|
|
|
|
|
swap(temporary);
|
|
|
|
|
return *this;
|
|
|
|
|
}
|
|
|
|
|
|
2025-11-30 12:18:43 -03:00
|
|
|
ReadonlySpan<struct addrinfo> addresses() const { return m_addresses; }
|
|
|
|
|
|
|
|
|
|
private:
|
2026-06-13 14:46:15 -03:00
|
|
|
void swap(AddressInfoVector& other);
|
2025-11-30 12:18:43 -03:00
|
|
|
|
|
|
|
|
Vector<struct addrinfo> m_addresses;
|
2026-06-13 14:46:15 -03:00
|
|
|
struct addrinfo* m_ptr { nullptr };
|
2025-11-30 12:18:43 -03:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}
|