1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::util::PinnedFuture;
use crate::{Request, Response, Data};
use crate::header::{RequestHeader, ResponseHeader};

// Catcher Trait
pub trait Catcher: Send +  Sync {
	fn check(&self, req: &RequestHeader, res: &ResponseHeader) -> bool;

	// check if every data you expect is in Data
	fn validate_data(&self, _data: &Data) {}

	fn call<'a>(
		&'a self,
		req: &'a mut Request,
		resp: &'a mut Response,
		data: &'a Data
	) -> PinnedFuture<'a, crate::Result<()>>;
}