Remove lv2_socket_native destructor

This commit is contained in:
Elad 2024-12-24 15:15:20 +02:00
parent 6a4b9430c0
commit d376ba5994
6 changed files with 28 additions and 22 deletions

View file

@ -175,3 +175,14 @@ void lv2_socket::queue_wake(ppu_thread* ppu)
break;
}
}
lv2_socket& lv2_socket::operator=(thread_state s) noexcept
{
if (s == thread_state::finished)
{
close();
}
return *this;
}

View file

@ -27,6 +27,8 @@ using socket_type = uptr;
using socket_type = int;
#endif
enum class thread_state : u32;
class lv2_socket
{
public:
@ -62,7 +64,8 @@ public:
lv2_socket(utils::serial&, lv2_socket_type type);
static std::function<void(void*)> load(utils::serial& ar);
void save(utils::serial&, bool save_only_this_class = false);
virtual ~lv2_socket() = default;
~lv2_socket() noexcept = default;
lv2_socket& operator=(thread_state s) noexcept;
std::unique_lock<shared_mutex> lock();

View file

@ -57,19 +57,6 @@ void lv2_socket_native::save(utils::serial& ar)
ar(is_socket_connected());
}
lv2_socket_native::~lv2_socket_native()
{
std::lock_guard lock(mutex);
if (socket)
{
#ifdef _WIN32
::closesocket(socket);
#else
::close(socket);
#endif
}
}
s32 lv2_socket_native::create_socket()
{
ensure(family == SYS_NET_AF_INET);
@ -1114,10 +1101,12 @@ void lv2_socket_native::close()
socket = {};
}
auto& dnshook = g_fxo->get<np::dnshook>();
dnshook.remove_dns_spy(lv2_id);
if (auto dnshook = g_fxo->try_get<np::dnshook>())
{
dnshook->remove_dns_spy(lv2_id);
}
if (bound_port)
if (bound_port && g_fxo->is_init<named_thread<np::np_handler>>())
{
auto& nph = g_fxo->get<named_thread<np::np_handler>>();
nph.upnp_remove_port_mapping(bound_port, type == SYS_NET_SOCK_STREAM ? "TCP" : "UDP");

View file

@ -35,7 +35,6 @@ public:
lv2_socket_native(lv2_socket_family family, lv2_socket_type type, lv2_ip_protocol protocol);
lv2_socket_native(utils::serial& ar, lv2_socket_type type);
void save(utils::serial& ar);
~lv2_socket_native();
s32 create_socket();
std::tuple<bool, s32, shared_ptr<lv2_socket>, sys_net_sockaddr> accept(bool is_lock = true) override;

View file

@ -330,8 +330,9 @@ void lv2_socket_p2p::close()
return;
}
auto& nc = g_fxo->get<p2p_context>();
if (g_fxo->is_init<p2p_context>())
{
auto& nc = g_fxo->get<p2p_context>();
std::lock_guard lock(nc.list_p2p_ports_mutex);
if (!nc.list_p2p_ports.contains(port))

View file

@ -944,8 +944,9 @@ void lv2_socket_p2ps::close()
return;
}
auto& nc = g_fxo->get<p2p_context>();
if (g_fxo->is_init<p2p_context>())
{
auto& nc = g_fxo->get<p2p_context>();
std::lock_guard lock(nc.list_p2p_ports_mutex);
auto& p2p_port = ::at32(nc.list_p2p_ports, port);
{
@ -973,8 +974,10 @@ void lv2_socket_p2ps::close()
}
}
auto& tcpm = g_fxo->get<named_thread<tcp_timeout_monitor>>();
tcpm.clear_all_messages(lv2_id);
if (const auto tcpm = g_fxo->try_get<named_thread<tcp_timeout_monitor>>())
{
tcpm->clear_all_messages(lv2_id);
}
}
s32 lv2_socket_p2ps::shutdown([[maybe_unused]] s32 how)