1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 05:08:13 +00:00

Net: Make NetworkAdapter reference-counted

The idea behind WeakPtr<NetworkAdapter> was to support hot-pluggable
network adapters, but on closer thought, that's super impractical so
let's not go down that road.
This commit is contained in:
Andreas Kling 2020-02-08 00:19:46 +01:00
parent f3a5985bb2
commit a3f39fe789
7 changed files with 19 additions and 19 deletions

View file

@ -49,26 +49,26 @@ void NetworkAdapter::for_each(Function<void(NetworkAdapter&)> callback)
callback(*it);
}
WeakPtr<NetworkAdapter> NetworkAdapter::from_ipv4_address(const IPv4Address& address)
RefPtr<NetworkAdapter> NetworkAdapter::from_ipv4_address(const IPv4Address& address)
{
LOCKER(all_adapters().lock());
for (auto* adapter : all_adapters().resource()) {
if (adapter->ipv4_address() == address)
return adapter->make_weak_ptr();
return adapter;
}
if (address[0] == 127)
return LoopbackAdapter::the().make_weak_ptr();
return LoopbackAdapter::the();
return nullptr;
}
WeakPtr<NetworkAdapter> NetworkAdapter::lookup_by_name(const StringView& name)
RefPtr<NetworkAdapter> NetworkAdapter::lookup_by_name(const StringView& name)
{
NetworkAdapter* found_adapter = nullptr;
for_each([&](auto& adapter) {
if (adapter.name() == name)
found_adapter = &adapter;
});
return found_adapter ? found_adapter->make_weak_ptr() : nullptr;
return found_adapter;
}
NetworkAdapter::NetworkAdapter()