Skip to main content

Module virtual_device

Module virtual_device 

Source
Expand description

A filesystem-backed virtual MTP device, for testing without hardware. Exempt from SemVer.

Needs the virtual-device feature. This is test support: the config fields and the hooks here (fault injection, watcher control, stale-handle simulation) can change in any release, so treat them like your test fixtures and expect to adjust when you bump mtp-rs.

Open a device directly with MtpDeviceBuilder::open_virtual, or call register_virtual_device so that MtpDevice::list_devices and the open_by_* methods find it like a plugged-in device.

Build a config by stating the fields you care about and spreading the rest:

use mtp_rs::virtual_device::{VirtualDeviceConfig, VirtualStorageConfig};
use std::path::PathBuf;

let config = VirtualDeviceConfig {
    storages: vec![VirtualStorageConfig {
        description: "Internal Storage".into(),
        capacity: 1024 * 1024,
        backing_dir: PathBuf::from("/tmp/mtp-test"),
        read_only: false,
    }],
    ..Default::default()
};

Re-exportsยง

pub use crate::transport::virtual_device::config::VirtualDeviceConfig;
pub use crate::transport::virtual_device::config::VirtualStorageConfig;
pub use crate::transport::virtual_device::registry::clear_dropped_paths;
pub use crate::transport::virtual_device::registry::clear_object_info_errors;
pub use crate::transport::virtual_device::registry::dropped_paths_since_pause;
pub use crate::transport::virtual_device::registry::force_cancel_wedge;
pub use crate::transport::virtual_device::registry::force_object_info_error;
pub use crate::transport::virtual_device::registry::force_operation_wedge;
pub use crate::transport::virtual_device::registry::force_partial_read_caps;
pub use crate::transport::virtual_device::registry::pause_watcher;
pub use crate::transport::virtual_device::registry::register_virtual_device;
pub use crate::transport::virtual_device::registry::rekey_virtual_object;
pub use crate::transport::virtual_device::registry::rescan_virtual_device;
pub use crate::transport::virtual_device::registry::unregister_virtual_device;
pub use crate::transport::virtual_device::registry::was_path_dropped;
pub use crate::transport::virtual_device::registry::WatcherGuard;
pub use crate::transport::virtual_device::RescanSummary;
pub use crate::transport::virtual_device::DROPPED_PATHS_CAP;