pub struct ModifyRequest {
    pub preserve_source: bool,
    pub overwrite_destination: bool,
    pub source: Path,
    pub destination: Path,
}
Expand description

uavcan.file.Modify.1.1

Size ranges from 6 to 516 bytes

Manipulate a remote file system entry. Applies to files, directories, and links alike. If the remote entry is a directory, all nested entries will be affected, too.

The server should perform all operations atomically, unless atomicity is not supported by the underlying file system.

Atomic copying can be effectively employed by remote nodes before reading or after writing the file to minimize the possibility of race conditions. For example, before reading a large file from the server, the cilent might opt to create a temporary copy of it first, then read the copy, and delete it upon completion. Likewise, a similar strategy can be employed for writing, where the file is first written at a temporary location, and then moved to its final destination. These approaches, however, may lead to creation of dangling temporary files if the client failed to dispose of them properly, so that risk should be taken into account.

Move/Copy Specify the source path and the destination path. If the source does not exist, the operation will fail. Set the preserve_source flag to copy rather than move. If the destination exists and overwrite_destination is not set, the operation will fail. If the target path includes non-existent directories, they will be created (like “mkdir -p”).

Touch Specify the destination path and make the source path empty. If the path exists (file/directory/link), its modification time will be updated. If the path does not exist, an empty file will be created. If the target path includes non-existent directories, they will be created (like “mkdir -p”). Flags are ignored.

Remove Specify the source path (file/directory/link) and make the destination path empty. Fails if the path does not exist. Flags are ignored.

Fields§

§preserve_source: bool

Do not remove the source. Used to copy instead of moving.

saturated bool

Always aligned, size 1 bits

§overwrite_destination: bool

If the destination exists, remove it beforehand.

saturated bool

Not always aligned, size 1 bits

§source: Path

uavcan.file.Path.2.0

Always aligned, size ranges from 8 to 2048 bits

§destination: Path

uavcan.file.Path.2.0

Always aligned, size ranges from 8 to 2048 bits

Trait Implementations§

source§

impl DataType for ModifyRequest

source§

const EXTENT_BYTES: Option<u32> = _

This type is delimited with an extent of 600 bytes.

source§

impl Deserialize for ModifyRequest

source§

fn deserialize(cursor: &mut ReadCursor<'_>) -> Result<Self, DeserializeError>where Self: Sized,

Deserializes a value and returns it
source§

fn deserialize_from_bytes(bytes: &[u8]) -> Result<Self, DeserializeError>where Self: Sized,

A convenience function that creates a cursor around the provided bytes and calls deserialize
source§

impl Serialize for ModifyRequest

source§

fn size_bits(&self) -> usize

Returns the size of the encoded form of this value, in bits Read more
source§

fn serialize(&self, cursor: &mut WriteCursor<'_>)

Serializes this value into a buffer Read more
source§

fn serialize_to_bytes(&self, bytes: &mut [u8])

A convenience function that creates a cursor around the provided bytes and calls serialize
source§

impl Request for ModifyRequest

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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, U> TryFrom<U> for Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.