Struct canadensis_data_types::uavcan::file::modify_1_1::ModifyRequest
source · 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
impl DataType for ModifyRequest
source§const EXTENT_BYTES: Option<u32> = _
const EXTENT_BYTES: Option<u32> = _
This type is delimited with an extent of 600 bytes.
source§impl Deserialize for ModifyRequest
impl Deserialize for ModifyRequest
source§fn deserialize(cursor: &mut ReadCursor<'_>) -> Result<Self, DeserializeError>where
Self: Sized,
fn deserialize(cursor: &mut ReadCursor<'_>) -> Result<Self, DeserializeError>where Self: Sized,
source§fn deserialize_from_bytes(bytes: &[u8]) -> Result<Self, DeserializeError>where
Self: Sized,
fn deserialize_from_bytes(bytes: &[u8]) -> Result<Self, DeserializeError>where Self: Sized,
deserialize
source§impl Serialize for ModifyRequest
impl Serialize for ModifyRequest
source§fn size_bits(&self) -> usize
fn size_bits(&self) -> usize
source§fn serialize(&self, cursor: &mut WriteCursor<'_>)
fn serialize(&self, cursor: &mut WriteCursor<'_>)
source§fn serialize_to_bytes(&self, bytes: &mut [u8])
fn serialize_to_bytes(&self, bytes: &mut [u8])
serialize