pub struct ScpTransferJson {
pub ok: bool,
pub event: String,
pub direction: String,
pub vps: String,
pub local: String,
pub remote: String,
pub bytes: u64,
pub duration_ms: u64,
pub mtime_preserved: bool,
pub durable: bool,
}Expand description
scp upload|download --json success stdout.
Fields§
§ok: boolAlways true.
event: StringDiscriminator: "scp-transfer".
direction: String"upload" or "download".
vps: StringVPS name.
local: StringLocal path.
remote: StringRemote path.
bytes: u64Bytes transferred.
duration_ms: u64Duration in milliseconds.
mtime_preserved: boolWhether the remote modification time landed on the local file.
G-SCP-R01: the CLI documented mtime preservation as a guarantee while treating
it as best-effort in code, and the failure was discarded at two nesting levels.
A build pipeline that decides whether to recompile by comparing mtime could act
on a timestamp that was never applied, with the symptom surfacing far from the
cause. Additive and defaulted to true, so events written before this field
existed still deserialize and pre-existing consumers are unaffected.
durable: boolWhether the parent directory was fsynced after the atomic rename.
G-SCP-R02: the rename is atomic but the directory entry is not durable until it is flushed. Success was reported unqualified, so an agent could not tell a durable write from one that a power loss would erase.
Trait Implementations§
Source§impl Clone for ScpTransferJson
impl Clone for ScpTransferJson
Source§fn clone(&self) -> ScpTransferJson
fn clone(&self) -> ScpTransferJson
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ScpTransferJson
impl Debug for ScpTransferJson
Source§impl<'de> Deserialize<'de> for ScpTransferJson
impl<'de> Deserialize<'de> for ScpTransferJson
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for ScpTransferJson
Source§impl PartialEq for ScpTransferJson
impl PartialEq for ScpTransferJson
Source§impl Serialize for ScpTransferJson
impl Serialize for ScpTransferJson
impl StructuralPartialEq for ScpTransferJson
Auto Trait Implementations§
impl Freeze for ScpTransferJson
impl RefUnwindSafe for ScpTransferJson
impl Send for ScpTransferJson
impl Sync for ScpTransferJson
impl Unpin for ScpTransferJson
impl UnsafeUnpin for ScpTransferJson
impl UnwindSafe for ScpTransferJson
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.