From 33765a8ecacdecf7a626e6062685a9bc8356b595 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 16 May 2021 20:21:09 +0100 Subject: [PATCH] Reader access: Add some methods to get at the inner TimedFdReader Signed-off-by: Ian Jackson --- src/mgmtchannel.rs | 4 ++++ src/packetframe.rs | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/mgmtchannel.rs b/src/mgmtchannel.rs index e245408a..bd14e7e4 100644 --- a/src/mgmtchannel.rs +++ b/src/mgmtchannel.rs @@ -122,6 +122,10 @@ impl MgmtChannel { self.cmd_withbulk(cmd, &mut io::empty(), &mut io::sink(), &mut |_|Ok(()))? } + pub fn read_inner_mut(&mut self) -> &mut TimedFdReader { + self.read.inner_mut() + } + pub fn for_game(self, game: InstanceName, how: MgmtGameUpdateMode) -> MgmtChannelForGame { MgmtChannelForGame { diff --git a/src/packetframe.rs b/src/packetframe.rs index 1bc227c8..5effbfd7 100644 --- a/src/packetframe.rs +++ b/src/packetframe.rs @@ -151,9 +151,12 @@ impl Fuse { r? } - pub fn get_even_broken(&self) -> &RW { + pub fn inner_even_broken(&self) -> &RW { self.inner.as_ref().unwrap_or_else(|e| e.inner.as_ref().unwrap()) } + pub fn inner_even_broken_mut(&mut self) -> &mut RW { + self.inner.as_mut().unwrap_or_else(|e| e.inner.as_mut().unwrap()) + } } impl Read for Fuse { @@ -303,6 +306,14 @@ impl FrameReader { { self.read_withbulk()?.0 } + +pub fn inner (& self)->& R{ self.inner.get_ref().inner_even_broken() } +pub fn inner_mut(&mut self)->&mut R{ self.inner.get_mut().inner_even_broken_mut() } +} + +impl<'r,R:Read> ReadFrame<'r,R> { + pub fn inner (& self) -> & R { self.fr.inner() } + pub fn inner_mut(&mut self) -> &mut R { self.fr.inner_mut() } } #[ext(pub, name=ReadExt)] -- 2.30.2