Przeglądaj źródła

LibCore: Move FileWatcher implementations into separate files

Rather than one big file with (eventually) all implementations for each
OS, let's keep OS-specific implementations in their own files.
Timothy Flynn 2 lat temu
rodzic
commit
5bfc9daba1

+ 7 - 1
Userland/Libraries/LibCore/CMakeLists.txt

@@ -10,7 +10,6 @@ set(SOURCES
     Event.cpp
     EventLoop.cpp
     File.cpp
-    FileWatcher.cpp
     IODevice.cpp
     LockFile.cpp
     MappedFile.cpp
@@ -45,5 +44,12 @@ if (NOT ANDROID AND NOT WIN32 AND NOT EMSCRIPTEN)
     )
 endif()
 
+# FIXME: Implement Core::FileWatcher for Linux, macOS, *BSD, and Windows.
+if (SERENITYOS)
+    list(APPEND SOURCES FileWatcherSerenity.cpp)
+else()
+    list(APPEND SOURCES FileWatcherUnimplemented.cpp)
+endif()
+
 serenity_lib(LibCore core)
 target_link_libraries(LibCore PRIVATE LibCrypt LibSystem)

+ 4 - 29
Userland/Libraries/LibCore/FileWatcher.cpp → Userland/Libraries/LibCore/FileWatcherSerenity.cpp

@@ -18,10 +18,11 @@
 #include <string.h>
 #include <unistd.h>
 
-namespace Core {
+#if !defined(AK_OS_SERENITY)
+static_assert(false, "This file must only be used for SerenityOS");
+#endif
 
-// Only supported in serenity mode because we use InodeWatcher syscalls
-#ifdef AK_OS_SERENITY
+namespace Core {
 
 static Optional<FileWatcherEvent> get_event_from_fd(int fd, HashMap<unsigned, DeprecatedString> const& wd_to_path)
 {
@@ -206,30 +207,4 @@ FileWatcher::~FileWatcher()
     dbgln_if(FILE_WATCHER_DEBUG, "Stopped watcher at fd {}", m_notifier->fd());
 }
 
-#else
-// FIXME: Implement Core::FileWatcher for linux, macOS, and *BSD
-FileWatcher::~FileWatcher() { }
-FileWatcher::FileWatcher(int watcher_fd, NonnullRefPtr<Notifier> notifier)
-    : FileWatcherBase(watcher_fd)
-    , m_notifier(move(notifier))
-{
-}
-
-ErrorOr<NonnullRefPtr<FileWatcher>> FileWatcher::create(InodeWatcherFlags)
-{
-    return Error::from_errno(ENOTSUP);
-}
-
-ErrorOr<bool> FileWatcherBase::add_watch(DeprecatedString, FileWatcherEvent::Type)
-{
-    return Error::from_errno(ENOTSUP);
-}
-
-ErrorOr<bool> FileWatcherBase::remove_watch(DeprecatedString)
-{
-    return Error::from_errno(ENOTSUP);
-}
-
-#endif
-
 }

+ 38 - 0
Userland/Libraries/LibCore/FileWatcherUnimplemented.cpp

@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2020, Itamar S. <itamar8910@gmail.com>
+ * Copyright (c) 2021, the SerenityOS developers.
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include "FileWatcher.h"
+#include <Kernel/API/InodeWatcherFlags.h>
+#include <LibCore/Notifier.h>
+#include <errno.h>
+
+namespace Core {
+
+ErrorOr<NonnullRefPtr<FileWatcher>> FileWatcher::create(InodeWatcherFlags)
+{
+    return Error::from_errno(ENOTSUP);
+}
+
+FileWatcher::FileWatcher(int watcher_fd, NonnullRefPtr<Notifier> notifier)
+    : FileWatcherBase(watcher_fd)
+    , m_notifier(move(notifier))
+{
+}
+
+FileWatcher::~FileWatcher() = default;
+
+ErrorOr<bool> FileWatcherBase::add_watch(DeprecatedString, FileWatcherEvent::Type)
+{
+    return Error::from_errno(ENOTSUP);
+}
+
+ErrorOr<bool> FileWatcherBase::remove_watch(DeprecatedString)
+{
+    return Error::from_errno(ENOTSUP);
+}
+
+}