Skip to main content

mtp_rs/
virtual_device.rs

1//! A filesystem-backed virtual MTP device, for testing without hardware. **Exempt from SemVer.**
2//!
3//! Needs the `virtual-device` feature. This is test support: the config fields and the hooks here
4//! (fault injection, watcher control, stale-handle simulation) can change in any release, so treat
5//! them like your test fixtures and expect to adjust when you bump `mtp-rs`.
6//!
7//! Open a device directly with [`MtpDeviceBuilder::open_virtual`](crate::MtpDeviceBuilder::open_virtual),
8//! or call [`register_virtual_device`] so that [`MtpDevice::list_devices`](crate::MtpDevice::list_devices)
9//! and the `open_by_*` methods find it like a plugged-in device.
10//!
11//! Build a config by stating the fields you care about and spreading the rest:
12//!
13//! ```rust,no_run
14//! use mtp_rs::virtual_device::{VirtualDeviceConfig, VirtualStorageConfig};
15//! use std::path::PathBuf;
16//!
17//! let config = VirtualDeviceConfig {
18//!     storages: vec![VirtualStorageConfig {
19//!         description: "Internal Storage".into(),
20//!         capacity: 1024 * 1024,
21//!         backing_dir: PathBuf::from("/tmp/mtp-test"),
22//!         read_only: false,
23//!     }],
24//!     ..Default::default()
25//! };
26//! ```
27
28pub use crate::transport::virtual_device::config::{VirtualDeviceConfig, VirtualStorageConfig};
29pub use crate::transport::virtual_device::registry::{
30    clear_dropped_paths, clear_object_info_errors, dropped_paths_since_pause, force_cancel_wedge,
31    force_object_info_error, force_operation_wedge, force_partial_read_caps, pause_watcher,
32    register_virtual_device, rekey_virtual_object, rescan_virtual_device,
33    unregister_virtual_device, was_path_dropped, WatcherGuard,
34};
35pub use crate::transport::virtual_device::{RescanSummary, DROPPED_PATHS_CAP};