From 3ebc3b58453b224ad7708d9e4cc7a2e92032afc5 Mon Sep 17 00:00:00 2001 From: Tim Kuehn Date: Tue, 28 Jul 2020 21:27:36 -0700 Subject: [PATCH] Add accessor fns. - ClientHandler::get_pin_channel - BaseChannel::get_pin_ref - serde_transport::Transport::get_ref --- tarpc/src/rpc/server/mod.rs | 12 +++++++++++- tarpc/src/serde_transport/mod.rs | 7 +++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/tarpc/src/rpc/server/mod.rs b/tarpc/src/rpc/server/mod.rs index bd303da..f1df204 100644 --- a/tarpc/src/rpc/server/mod.rs +++ b/tarpc/src/rpc/server/mod.rs @@ -197,11 +197,16 @@ where Self::new(Config::default(), transport) } - /// Returns the inner transport. + /// Returns the inner transport over which messages are sent and received. pub fn get_ref(&self) -> &T { self.transport.get_ref() } + /// Returns the inner transport over which messages are sent and received. + pub fn get_pin_ref(self: Pin<&mut Self>) -> Pin<&mut T> { + self.project().transport.get_pin_mut() + } + fn cancel_request(mut self: Pin<&mut Self>, trace_context: &trace::Context, request_id: u64) { // It's possible the request was already completed, so it's fine // if this is None. @@ -400,6 +405,11 @@ where C: Channel, S: Serve, { + /// Returns the inner channel over which messages are sent and received. + pub fn get_pin_channel(self: Pin<&mut Self>) -> Pin<&mut C> { + self.project().channel + } + fn pump_read( mut self: Pin<&mut Self>, cx: &mut Context<'_>, diff --git a/tarpc/src/serde_transport/mod.rs b/tarpc/src/serde_transport/mod.rs index 7c1b7ff..3762199 100644 --- a/tarpc/src/serde_transport/mod.rs +++ b/tarpc/src/serde_transport/mod.rs @@ -23,6 +23,13 @@ pub struct Transport { inner: SerdeFramed, Item, SinkItem, Codec>, } +impl Transport { + /// Returns the inner transport over which messages are sent and received. + pub fn get_ref(&self) -> &S { + self.inner.get_ref().get_ref() + } +} + impl Stream for Transport where S: AsyncWrite + AsyncRead,