Skip to main content

FileSystemWatcher

Struct FileSystemWatcher 

Source
pub struct FileSystemWatcher { /* private fields */ }
Expand description

Filesystem watcher that emits debounced batches of dirty paths.

Uses notify-debouncer-mini for event coalescing. All paths within the debounce window are collected, de-duplicated, sorted, and emitted as a single WatcherBatch.

Implementations§

Source§

impl FileSystemWatcher

Source

pub fn new( path: PathBuf, config: WatcherConfig, shutdown: Arc<AtomicBool>, ) -> Result<Self>

Create a new watcher for the given directory.

§Arguments
  • path - Directory to watch recursively (also used as root_path for validation)
  • config - Watcher configuration
  • shutdown - AtomicBool for graceful shutdown
§Returns

A watcher that can be polled for batch events

Source

pub fn recv_batch(&self) -> Option<WatcherBatch>

Receive the next batch, blocking until available.

§Returns

None if the watcher thread has terminated

Source

pub fn try_recv_batch(&self) -> Option<WatcherBatch>

Try to receive a batch without blocking.

§Returns
  • Some(batch) if a batch is available
  • None if no batch is available or watcher terminated
Source

pub fn recv_batch_timeout( &self, timeout: Duration, ) -> Result<Option<WatcherBatch>, ()>

Receive the next batch with a timeout.

§Returns
  • Ok(Some(batch)) if a batch is available
  • Ok(None) if the watcher thread has terminated
  • Err if timeout elapsed
Source

pub fn try_recv_event(&self) -> Result<Option<FileEvent>>

Legacy: Try to receive a single event without blocking (DEPRECATED).

This method converts batch events to single events for backward compatibility. Paths from each batch are returned one at a time in sorted order.

§Deprecated

Use try_recv_batch() instead for deterministic batch processing.

§Errors

Returns an error if a mutex is poisoned (thread panicked while holding the lock).

Source

pub fn recv_event(&self) -> Result<Option<FileEvent>>

Legacy: Receive the next event, blocking until available (DEPRECATED).

This method converts batch events to single events for backward compatibility. Paths from each batch are returned one at a time in sorted order.

§Deprecated

Use recv_batch() instead for deterministic batch processing.

§Errors

Returns an error if a mutex is poisoned (thread panicked while holding the lock).

Source

pub fn shutdown(self)

Explicitly shut down the watcher and join all background threads.

This method consumes the watcher, ensuring that:

  1. The pub/sub receiver is shut down cleanly (if present)
  2. The watcher thread is joined (waits for clean termination)
§Note

This method should be called during graceful shutdown to ensure all threads have terminated before the program exits.

Trait Implementations§

Source§

impl Drop for FileSystemWatcher

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V