fsevent-stream

GitHub Workflow Status crates.io Documentation

Stream-based FSEvents API bindings.

Features

Example

```rust use std::path::Path; use std::time::Duration;

use fseventstream::ffi::{ kFSEventStreamCreateFlagFileEvents, kFSEventStreamCreateFlagNoDefer, kFSEventStreamCreateFlagUseCFTypes, kFSEventStreamCreateFlagUseExtendedData, kFSEventStreamEventIdSinceNow, }; use fseventstream::stream::createeventstream; use futures_util::StreamExt;

let (stream, handler) = createeventstream( [Path::new(".")], kFSEventStreamEventIdSinceNow, Duration::ZERO, kFSEventStreamCreateFlagNoDefer | kFSEventStreamCreateFlagFileEvents | kFSEventStreamCreateFlagUseExtendedData | kFSEventStreamCreateFlagUseCFTypes, ) .expect("stream to be created");

let mut stream = stream.intoflatten(); while let Some(event) = stream.next().await { println!( "[{}] path: {:?}({}), flags: {} ({:x})", event.id, event.path, event.inode.unwrapor(-1), event.flags, event.raw_flags ); } ```

Runtime Support

Both tokio and async-std are supported via feature flags.

tokio support is enabled by default. To enable async-std support, disable default features and enable async-std feature.

Acknowledgement

Some code in this project is adapted from the following projects:

License

This project is licensed under MIT License.

FOSSA Status