hitbox/transition_groups/
upstream.rs1use 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
8pub 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}