From 242063866f855bf01259f8cae5d1a877fe1fc031 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 29 Aug 2021 01:22:34 +0200 Subject: [PATCH] Kernel: Rename LocalSocket factory to try_create() & tighten return type Also tighten the return type to KResultOr> since it cannot return any other socket type. --- Kernel/Net/LocalSocket.cpp | 6 +++--- Kernel/Net/LocalSocket.h | 2 +- Kernel/Net/Socket.cpp | 8 ++++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Kernel/Net/LocalSocket.cpp b/Kernel/Net/LocalSocket.cpp index d62c14ad86..b783102a37 100644 --- a/Kernel/Net/LocalSocket.cpp +++ b/Kernel/Net/LocalSocket.cpp @@ -34,7 +34,7 @@ void LocalSocket::for_each(Function callback) }); } -KResultOr> LocalSocket::create(int type) +KResultOr> LocalSocket::try_create(int type) { auto client_buffer = DoubleBuffer::try_create(); if (!client_buffer) @@ -50,11 +50,11 @@ KResultOr> LocalSocket::create(int type) KResultOr LocalSocket::create_connected_pair(int type) { - auto socket_or_error = LocalSocket::create(type); + auto socket_or_error = LocalSocket::try_create(type); if (socket_or_error.is_error()) return socket_or_error.error(); - auto socket = static_ptr_cast(socket_or_error.release_value()); + auto socket = socket_or_error.release_value(); auto description1_result = FileDescription::try_create(*socket); if (description1_result.is_error()) return description1_result.error(); diff --git a/Kernel/Net/LocalSocket.h b/Kernel/Net/LocalSocket.h index af4728c53f..7a69814897 100644 --- a/Kernel/Net/LocalSocket.h +++ b/Kernel/Net/LocalSocket.h @@ -22,7 +22,7 @@ struct SocketPair { class LocalSocket final : public Socket { public: - static KResultOr> create(int type); + static KResultOr> try_create(int type); static KResultOr create_connected_pair(int type); virtual ~LocalSocket() override; diff --git a/Kernel/Net/Socket.cpp b/Kernel/Net/Socket.cpp index 3ab4f846b7..7ef57da95d 100644 --- a/Kernel/Net/Socket.cpp +++ b/Kernel/Net/Socket.cpp @@ -20,8 +20,12 @@ namespace Kernel { KResultOr> Socket::create(int domain, int type, int protocol) { switch (domain) { - case AF_LOCAL: - return LocalSocket::create(type & SOCK_TYPE_MASK); + case AF_LOCAL: { + auto socket_or_error = LocalSocket::try_create(type & SOCK_TYPE_MASK); + if (socket_or_error.is_error()) + return socket_or_error.error(); + return socket_or_error.release_value(); + } case AF_INET: return IPv4Socket::create(type & SOCK_TYPE_MASK, protocol); default: