Quellcode durchsuchen

Kernel/Net: Make the LoopbackAdapter initializer to use ErrorOr pattern

This looks much more nice, and also matches our pattern for other types
of network adapters' initializers.
Liav A vor 2 Jahren
Ursprung
Commit
bd7d4513bf

+ 3 - 5
Kernel/Net/LoopbackAdapter.cpp

@@ -11,12 +11,10 @@ namespace Kernel {
 
 
 static bool s_loopback_initialized = false;
 static bool s_loopback_initialized = false;
 
 
-LockRefPtr<LoopbackAdapter> LoopbackAdapter::try_create()
+ErrorOr<NonnullRefPtr<LoopbackAdapter>> LoopbackAdapter::try_create()
 {
 {
-    auto interface_name = KString::try_create("loop"sv);
-    if (interface_name.is_error())
-        return {};
-    return adopt_lock_ref_if_nonnull(new LoopbackAdapter(interface_name.release_value()));
+    auto interface_name = TRY(KString::try_create("loop"sv));
+    return TRY(adopt_nonnull_ref_or_enomem(new (nothrow) LoopbackAdapter(move(interface_name))));
 }
 }
 
 
 LoopbackAdapter::LoopbackAdapter(NonnullOwnPtr<KString> interface_name)
 LoopbackAdapter::LoopbackAdapter(NonnullOwnPtr<KString> interface_name)

+ 1 - 1
Kernel/Net/LoopbackAdapter.h

@@ -15,7 +15,7 @@ private:
     LoopbackAdapter(NonnullOwnPtr<KString>);
     LoopbackAdapter(NonnullOwnPtr<KString>);
 
 
 public:
 public:
-    static LockRefPtr<LoopbackAdapter> try_create();
+    static ErrorOr<NonnullRefPtr<LoopbackAdapter>> try_create();
     virtual ~LoopbackAdapter() override;
     virtual ~LoopbackAdapter() override;
 
 
     virtual ErrorOr<void> initialize(Badge<NetworkingManagement>) override { VERIFY_NOT_REACHED(); }
     virtual ErrorOr<void> initialize(Badge<NetworkingManagement>) override { VERIFY_NOT_REACHED(); }

+ 2 - 3
Kernel/Net/NetworkingManagement.cpp

@@ -136,10 +136,9 @@ bool NetworkingManagement::initialize()
             m_adapters.with([&](auto& adapters) { adapters.append(*result.release_value()); });
             m_adapters.with([&](auto& adapters) { adapters.append(*result.release_value()); });
         }));
         }));
     }
     }
-    auto loopback = LoopbackAdapter::try_create();
-    VERIFY(loopback);
+    auto loopback = MUST(LoopbackAdapter::try_create());
     m_adapters.with([&](auto& adapters) { adapters.append(*loopback); });
     m_adapters.with([&](auto& adapters) { adapters.append(*loopback); });
-    m_loopback_adapter = loopback;
+    m_loopback_adapter = *loopback;
     return true;
     return true;
 }
 }
 }
 }