OnResponseStreamEndHandler

Trait OnResponseStreamEndHandler 

Source
pub trait OnResponseStreamEndHandler<ParamTy, State: Clone + Send + Sync + 'static> {
    type Future: Future<Output = Result<(), CatBridgeError>> + Send + 'static;

    // Required method
    fn call(self, event: ResponseStreamEvent<State>) -> Self::Future;
}
Available on crate feature servers only.
Expand description

A stream ending/(on disconnect) handler, attempts to be an incredibly thin layer between a function, and the actual ending handler.

Implemented so we can implement for function that accepts any varying amount of args of types that implement from request parts.

ParamTy is kept to prevent generation of conflicting type implementations of this trait. It however is not actually needed by any of our code.

Required Associated Types§

Source

type Future: Future<Output = Result<(), CatBridgeError>> + Send + 'static

Required Methods§

Source

fn call(self, event: ResponseStreamEvent<State>) -> Self::Future

Implementors§

Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1> OnResponseStreamEndHandler<(T1,), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2> OnResponseStreamEndHandler<(T1, T2), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3> OnResponseStreamEndHandler<(T1, T2, T3), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3, T4> OnResponseStreamEndHandler<(T1, T2, T3, T4), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3, T4) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send, T4: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3, T4, T5> OnResponseStreamEndHandler<(T1, T2, T3, T4, T5), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3, T4, T5) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send, T4: FromResponseStreamEvent<State> + Send, T5: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3, T4, T5, T6> OnResponseStreamEndHandler<(T1, T2, T3, T4, T5, T6), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3, T4, T5, T6) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send, T4: FromResponseStreamEvent<State> + Send, T5: FromResponseStreamEvent<State> + Send, T6: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3, T4, T5, T6, T7> OnResponseStreamEndHandler<(T1, T2, T3, T4, T5, T6, T7), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3, T4, T5, T6, T7) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send, T4: FromResponseStreamEvent<State> + Send, T5: FromResponseStreamEvent<State> + Send, T6: FromResponseStreamEvent<State> + Send, T7: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3, T4, T5, T6, T7, T8> OnResponseStreamEndHandler<(T1, T2, T3, T4, T5, T6, T7, T8), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send, T4: FromResponseStreamEvent<State> + Send, T5: FromResponseStreamEvent<State> + Send, T6: FromResponseStreamEvent<State> + Send, T7: FromResponseStreamEvent<State> + Send, T8: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3, T4, T5, T6, T7, T8, T9> OnResponseStreamEndHandler<(T1, T2, T3, T4, T5, T6, T7, T8, T9), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8, T9) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send, T4: FromResponseStreamEvent<State> + Send, T5: FromResponseStreamEvent<State> + Send, T6: FromResponseStreamEvent<State> + Send, T7: FromResponseStreamEvent<State> + Send, T8: FromResponseStreamEvent<State> + Send, T9: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> OnResponseStreamEndHandler<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send, T4: FromResponseStreamEvent<State> + Send, T5: FromResponseStreamEvent<State> + Send, T6: FromResponseStreamEvent<State> + Send, T7: FromResponseStreamEvent<State> + Send, T8: FromResponseStreamEvent<State> + Send, T9: FromResponseStreamEvent<State> + Send, T10: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> OnResponseStreamEndHandler<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send, T4: FromResponseStreamEvent<State> + Send, T5: FromResponseStreamEvent<State> + Send, T6: FromResponseStreamEvent<State> + Send, T7: FromResponseStreamEvent<State> + Send, T8: FromResponseStreamEvent<State> + Send, T9: FromResponseStreamEvent<State> + Send, T10: FromResponseStreamEvent<State> + Send, T11: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> OnResponseStreamEndHandler<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send, T4: FromResponseStreamEvent<State> + Send, T5: FromResponseStreamEvent<State> + Send, T6: FromResponseStreamEvent<State> + Send, T7: FromResponseStreamEvent<State> + Send, T8: FromResponseStreamEvent<State> + Send, T9: FromResponseStreamEvent<State> + Send, T10: FromResponseStreamEvent<State> + Send, T11: FromResponseStreamEvent<State> + Send, T12: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> OnResponseStreamEndHandler<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send, T4: FromResponseStreamEvent<State> + Send, T5: FromResponseStreamEvent<State> + Send, T6: FromResponseStreamEvent<State> + Send, T7: FromResponseStreamEvent<State> + Send, T8: FromResponseStreamEvent<State> + Send, T9: FromResponseStreamEvent<State> + Send, T10: FromResponseStreamEvent<State> + Send, T11: FromResponseStreamEvent<State> + Send, T12: FromResponseStreamEvent<State> + Send, T13: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> OnResponseStreamEndHandler<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send, T4: FromResponseStreamEvent<State> + Send, T5: FromResponseStreamEvent<State> + Send, T6: FromResponseStreamEvent<State> + Send, T7: FromResponseStreamEvent<State> + Send, T8: FromResponseStreamEvent<State> + Send, T9: FromResponseStreamEvent<State> + Send, T10: FromResponseStreamEvent<State> + Send, T11: FromResponseStreamEvent<State> + Send, T12: FromResponseStreamEvent<State> + Send, T13: FromResponseStreamEvent<State> + Send, T14: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> OnResponseStreamEndHandler<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send, T4: FromResponseStreamEvent<State> + Send, T5: FromResponseStreamEvent<State> + Send, T6: FromResponseStreamEvent<State> + Send, T7: FromResponseStreamEvent<State> + Send, T8: FromResponseStreamEvent<State> + Send, T9: FromResponseStreamEvent<State> + Send, T10: FromResponseStreamEvent<State> + Send, T11: FromResponseStreamEvent<State> + Send, T12: FromResponseStreamEvent<State> + Send, T13: FromResponseStreamEvent<State> + Send, T14: FromResponseStreamEvent<State> + Send, T15: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, OutputTy, State, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> OnResponseStreamEndHandler<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = OutputTy> + Send, OutputTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static, T1: FromResponseStreamEvent<State> + Send, T2: FromResponseStreamEvent<State> + Send, T3: FromResponseStreamEvent<State> + Send, T4: FromResponseStreamEvent<State> + Send, T5: FromResponseStreamEvent<State> + Send, T6: FromResponseStreamEvent<State> + Send, T7: FromResponseStreamEvent<State> + Send, T8: FromResponseStreamEvent<State> + Send, T9: FromResponseStreamEvent<State> + Send, T10: FromResponseStreamEvent<State> + Send, T11: FromResponseStreamEvent<State> + Send, T12: FromResponseStreamEvent<State> + Send, T13: FromResponseStreamEvent<State> + Send, T14: FromResponseStreamEvent<State> + Send, T15: FromResponseStreamEvent<State> + Send, T16: FromResponseStreamEvent<State> + Send,

Available on crate features clients or servers only.
Source§

impl<UnderlyingFnType, FnFutureTy, ResponseTy, State> OnResponseStreamEndHandler<(), State> for UnderlyingFnType
where UnderlyingFnType: FnOnce() -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = ResponseTy> + Send, ResponseTy: Into<Result<(), CatBridgeError>>, State: Clone + Send + Sync + 'static,

Available on crate features clients or servers only.

Allow any async function without arguments to be a handler

Source§

impl<UnderlyingFnType, FnFutureTy, ResponseTy, State, ArgTy> OnResponseStreamEndHandler<ArgTy, State> for UnderlyingFnType
where UnderlyingFnType: FnOnce(ArgTy) -> FnFutureTy + Clone + Send + 'static, FnFutureTy: Future<Output = ResponseTy> + Send, ResponseTy: Into<Result<(), CatBridgeError>>, ArgTy: From<ResponseStreamEvent<State>> + Send, State: Clone + Send + Sync + 'static,

Available on crate features clients or servers only.

Allow any async function with a single consuming argument.