From 245d157518fb535ccae8329ace911fb7091a8067 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 14 Oct 2020 23:28:13 +0100 Subject: [PATCH] timezone format thing shows up in log (1) Signed-off-by: Ian Jackson --- src/updates.rs | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/updates.rs b/src/updates.rs index e5e5c491..59b090b3 100644 --- a/src/updates.rs +++ b/src/updates.rs @@ -105,10 +105,18 @@ enum TransmitUpdateEntry<'u> { }, SetTableSize(Pos), #[serde(serialize_with="serialize_logentry")] - Log (&'u Timezone, &'u CommittedLogEntry), + Log(TransmitUpdateLogEntry<'u>), Error(&'u ErrorSignaledViaUpdate), } +type TransmitUpdateLogEntry<'u> = (&'u Timezone, &'u CommittedLogEntry); + +#[derive(Debug,Serialize)] +struct FormattedLogEntry<'u> { + when: String, + logent: &'u LogEntry, +} + // ========== implementation ========== // ---------- prepared updates, queued in memory ---------- @@ -480,7 +488,7 @@ impl PreparedUpdate { } }, PUE::Log(logent) => { - TUE::Log(&tz, &logent) + TUE::Log((&tz, &logent)) }, &PUE::SetTableSize(size) => { TUE::SetTableSize(size) @@ -502,11 +510,16 @@ impl PreparedUpdate { } } -fn serialize_logentry(tz: &Timezone, logent: &CommittedLogEntry, +impl<'u> Into> for TransmitUpdateLogEntry<'u> { + fn into(self) -> FormattedLogEntry<'u> { + let (tz, logent) = self; + let when = logent.when.render(&tz); + FormattedLogEntry { when, logent: &logent.logent } + } +} + +fn serialize_logentry(&(tz,logent): &TransmitUpdateLogEntry, s:S) -> Result { - let mut tup = s.serialize_tuple(2)?; - let ts = logent.when.render(&tz); - tup.serialize_element(&ts)?; - tup.serialize_element(&logent.logent)?; - tup.end() + let f : FormattedLogEntry = (tz, logent).into(); + f.serialize(s) } -- 2.30.2