@@ -272,7 +272,7 @@ where
|
||||
ResponseFuture { inner }
|
||||
}
|
||||
|
||||
pub(crate) fn send_request_retryable(
|
||||
pub(super) fn send_request_retryable(
|
||||
&mut self,
|
||||
req: Request<B>,
|
||||
) -> impl Future<Output = Result<Response<Body>, (crate::Error, Option<Request<B>>)>> + Unpin
|
||||
|
||||
@@ -346,7 +346,7 @@ mod sealed {
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) async fn resolve<R>(resolver: &mut R, name: Name) -> Result<R::Addrs, R::Error>
|
||||
pub(super) async fn resolve<R>(resolver: &mut R, name: Name) -> Result<R::Addrs, R::Error>
|
||||
where
|
||||
R: Resolve,
|
||||
{
|
||||
|
||||
@@ -6,10 +6,10 @@ use tokio::sync::{mpsc, oneshot};
|
||||
|
||||
use crate::common::{task, Pin, Poll};
|
||||
|
||||
pub type RetryPromise<T, U> = oneshot::Receiver<Result<U, (crate::Error, Option<T>)>>;
|
||||
pub type Promise<T> = oneshot::Receiver<Result<T, crate::Error>>;
|
||||
pub(crate) type RetryPromise<T, U> = oneshot::Receiver<Result<U, (crate::Error, Option<T>)>>;
|
||||
pub(crate) type Promise<T> = oneshot::Receiver<Result<T, crate::Error>>;
|
||||
|
||||
pub fn channel<T, U>() -> (Sender<T, U>, Receiver<T, U>) {
|
||||
pub(crate) fn channel<T, U>() -> (Sender<T, U>, Receiver<T, U>) {
|
||||
let (tx, rx) = mpsc::unbounded_channel();
|
||||
let (giver, taker) = want::new();
|
||||
let tx = Sender {
|
||||
@@ -25,7 +25,7 @@ pub fn channel<T, U>() -> (Sender<T, U>, Receiver<T, U>) {
|
||||
///
|
||||
/// While the inner sender is unbounded, the Giver is used to determine
|
||||
/// if the Receiver is ready for another request.
|
||||
pub struct Sender<T, U> {
|
||||
pub(crate) struct Sender<T, U> {
|
||||
/// One message is always allowed, even if the Receiver hasn't asked
|
||||
/// for it yet. This boolean keeps track of whether we've sent one
|
||||
/// without notice.
|
||||
@@ -44,24 +44,24 @@ pub struct Sender<T, U> {
|
||||
/// Cannot poll the Giver, but can still use it to determine if the Receiver
|
||||
/// has been dropped. However, this version can be cloned.
|
||||
#[cfg(feature = "http2")]
|
||||
pub struct UnboundedSender<T, U> {
|
||||
pub(crate) struct UnboundedSender<T, U> {
|
||||
/// Only used for `is_closed`, since mpsc::UnboundedSender cannot be checked.
|
||||
giver: want::SharedGiver,
|
||||
inner: mpsc::UnboundedSender<Envelope<T, U>>,
|
||||
}
|
||||
|
||||
impl<T, U> Sender<T, U> {
|
||||
pub fn poll_ready(&mut self, cx: &mut task::Context<'_>) -> Poll<crate::Result<()>> {
|
||||
pub(crate) fn poll_ready(&mut self, cx: &mut task::Context<'_>) -> Poll<crate::Result<()>> {
|
||||
self.giver
|
||||
.poll_want(cx)
|
||||
.map_err(|_| crate::Error::new_closed())
|
||||
}
|
||||
|
||||
pub fn is_ready(&self) -> bool {
|
||||
pub(crate) fn is_ready(&self) -> bool {
|
||||
self.giver.is_wanting()
|
||||
}
|
||||
|
||||
pub fn is_closed(&self) -> bool {
|
||||
pub(crate) fn is_closed(&self) -> bool {
|
||||
self.giver.is_canceled()
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ impl<T, U> Sender<T, U> {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn try_send(&mut self, val: T) -> Result<RetryPromise<T, U>, T> {
|
||||
pub(crate) fn try_send(&mut self, val: T) -> Result<RetryPromise<T, U>, T> {
|
||||
if !self.can_send() {
|
||||
return Err(val);
|
||||
}
|
||||
@@ -89,7 +89,7 @@ impl<T, U> Sender<T, U> {
|
||||
.map_err(|mut e| (e.0).0.take().expect("envelope not dropped").0)
|
||||
}
|
||||
|
||||
pub fn send(&mut self, val: T) -> Result<Promise<U>, T> {
|
||||
pub(crate) fn send(&mut self, val: T) -> Result<Promise<U>, T> {
|
||||
if !self.can_send() {
|
||||
return Err(val);
|
||||
}
|
||||
@@ -101,7 +101,7 @@ impl<T, U> Sender<T, U> {
|
||||
}
|
||||
|
||||
#[cfg(feature = "http2")]
|
||||
pub fn unbound(self) -> UnboundedSender<T, U> {
|
||||
pub(crate) fn unbound(self) -> UnboundedSender<T, U> {
|
||||
UnboundedSender {
|
||||
giver: self.giver.shared(),
|
||||
inner: self.inner,
|
||||
@@ -111,15 +111,15 @@ impl<T, U> Sender<T, U> {
|
||||
|
||||
#[cfg(feature = "http2")]
|
||||
impl<T, U> UnboundedSender<T, U> {
|
||||
pub fn is_ready(&self) -> bool {
|
||||
pub(crate) fn is_ready(&self) -> bool {
|
||||
!self.giver.is_canceled()
|
||||
}
|
||||
|
||||
pub fn is_closed(&self) -> bool {
|
||||
pub(crate) fn is_closed(&self) -> bool {
|
||||
self.giver.is_canceled()
|
||||
}
|
||||
|
||||
pub fn try_send(&mut self, val: T) -> Result<RetryPromise<T, U>, T> {
|
||||
pub(crate) fn try_send(&mut self, val: T) -> Result<RetryPromise<T, U>, T> {
|
||||
let (tx, rx) = oneshot::channel();
|
||||
self.inner
|
||||
.send(Envelope(Some((val, Callback::Retry(tx)))))
|
||||
@@ -139,7 +139,7 @@ impl<T, U> Clone for UnboundedSender<T, U> {
|
||||
}
|
||||
|
||||
#[pin_project::pin_project(PinnedDrop)]
|
||||
pub struct Receiver<T, U> {
|
||||
pub(crate) struct Receiver<T, U> {
|
||||
#[pin]
|
||||
inner: mpsc::UnboundedReceiver<Envelope<T, U>>,
|
||||
taker: want::Taker,
|
||||
@@ -199,7 +199,7 @@ impl<T, U> Drop for Envelope<T, U> {
|
||||
}
|
||||
}
|
||||
|
||||
pub enum Callback<T, U> {
|
||||
pub(crate) enum Callback<T, U> {
|
||||
Retry(oneshot::Sender<Result<U, (crate::Error, Option<T>)>>),
|
||||
NoRetry(oneshot::Sender<Result<U, crate::Error>>),
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ cfg_feature! {
|
||||
|
||||
mod client;
|
||||
pub mod conn;
|
||||
pub(crate) mod dispatch;
|
||||
pub(super) mod dispatch;
|
||||
mod pool;
|
||||
pub mod service;
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ impl Config {
|
||||
}
|
||||
|
||||
impl<T> Pool<T> {
|
||||
pub fn new(config: Config, __exec: &Exec) -> Pool<T> {
|
||||
pub(super) fn new(config: Config, __exec: &Exec) -> Pool<T> {
|
||||
let inner = if config.is_enabled() {
|
||||
Some(Arc::new(Mutex::new(PoolInner {
|
||||
connecting: HashSet::new(),
|
||||
@@ -140,7 +140,7 @@ impl<T> Pool<T> {
|
||||
impl<T: Poolable> Pool<T> {
|
||||
/// Returns a `Checkout` which is a future that resolves if an idle
|
||||
/// connection becomes available.
|
||||
pub fn checkout(&self, key: Key) -> Checkout<T> {
|
||||
pub(super) fn checkout(&self, key: Key) -> Checkout<T> {
|
||||
Checkout {
|
||||
key,
|
||||
pool: self.clone(),
|
||||
@@ -489,11 +489,11 @@ pub(super) struct Pooled<T: Poolable> {
|
||||
}
|
||||
|
||||
impl<T: Poolable> Pooled<T> {
|
||||
pub fn is_reused(&self) -> bool {
|
||||
pub(super) fn is_reused(&self) -> bool {
|
||||
self.is_reused
|
||||
}
|
||||
|
||||
pub fn is_pool_enabled(&self) -> bool {
|
||||
pub(super) fn is_pool_enabled(&self) -> bool {
|
||||
self.pool.0.is_some()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user