// Copyright 2016 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_FILES_FILE_DESCRIPTOR_WATCHER_POSIX_H_ #define BASE_FILES_FILE_DESCRIPTOR_WATCHER_POSIX_H_ #include <memory> #include "base/auto_reset.h" #include "base/base_export.h" #include "base/dcheck_is_on.h" #include "base/functional/callback.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/message_loop/message_pump_for_io.h" #include "base/sequence_checker.h" #include "base/synchronization/waitable_event.h" #include "base/task/single_thread_task_runner.h" namespace base { class SingleThreadTaskRunner; // The FileDescriptorWatcher API allows callbacks to be invoked when file // descriptors are readable or writable without blocking. // // To enable this API in unit tests, use a TaskEnvironment with // MainThreadType::IO. // // Note: Prefer FileDescriptorWatcher to MessageLoopForIO::WatchFileDescriptor() // for non-critical IO. FileDescriptorWatcher works on threads/sequences without // MessagePumps but involves going through the task queue after being notified // by the OS (a desirablable property for non-critical IO that shouldn't preempt // the main queue). class BASE_EXPORT FileDescriptorWatcher { … }; } // namespace base #endif // BASE_FILES_FILE_DESCRIPTOR_WATCHER_POSIX_H_