hitbox/transition_groups/
upstream.rs

1use crate::response::CacheableResponse;
2use crate::runtime::RuntimeAdapter;
3use crate::states::finish::Finish;
4use crate::states::initial::Initial;
5use crate::states::upstream_polled::UpstreamPolled;
6use std::fmt::Debug;
7
8/// Transition for `InitialCacheSettings::CacheDisabled` option.
9pub async fn transition<T, A>(state: Initial<A>) -> Finish<T>
10where
11    A: RuntimeAdapter,
12    A: RuntimeAdapter<UpstreamResult = T>,
13    T: Debug + CacheableResponse,
14{
15    match state.poll_upstream().await {
16        UpstreamPolled::Successful(state) => state.finish(),
17        UpstreamPolled::Error(error) => error.finish(),
18    }
19}