chiark / gitweb /
Reader access: Add some methods to get at the inner TimedFdReader
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 16 May 2021 19:21:09 +0000 (20:21 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 17 May 2021 13:58:58 +0000 (14:58 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/mgmtchannel.rs
src/packetframe.rs

index e245408a879551c39055bf2e1b52ceecbc10d0aa..bd14e7e45503ce43e1611d04f41375c68333a145 100644 (file)
@@ -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 {
index 1bc227c896a595b46b0ec4138c91d8c28053ffe1..5effbfd7ace2e1ecc023c60a65184d6dbb9b8a95 100644 (file)
@@ -151,9 +151,12 @@ impl<RW> Fuse<RW> {
     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<R:Read> Read for Fuse<R> {
@@ -303,6 +306,14 @@ impl<R:Read> FrameReader<R> {
   {
     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)]