iota_network_stack/callback/
mod.rs

1// Copyright (c) Mysten Labs, Inc.
2// Modifications Copyright (c) 2024 IOTA Stiftung
3// SPDX-License-Identifier: Apache-2.0
4
5use http::{HeaderMap, request, response};
6
7mod body;
8mod future;
9mod layer;
10mod service;
11
12pub use self::{
13    body::ResponseBody, future::ResponseFuture, layer::CallbackLayer, service::Callback,
14};
15
16pub trait MakeCallbackHandler {
17    type Handler: ResponseHandler;
18
19    fn make_handler(&self, request: &request::Parts) -> Self::Handler;
20}
21
22pub trait ResponseHandler {
23    fn on_response(&mut self, response: &response::Parts);
24    fn on_error<E>(&mut self, error: &E)
25    where
26        E: std::fmt::Display + 'static;
27
28    fn on_body_chunk<B>(&mut self, _chunk: &B)
29    where
30        B: bytes::Buf,
31    {
32        // do nothing
33    }
34
35    fn on_end_of_stream(&mut self, _trailers: Option<&HeaderMap>) {
36        // do nothing
37    }
38}