Skip to main content

ntex_io/
macros.rs

1/// Implements [`Filter::poll_read_ready`] and [`Filter::poll_write_ready`] by
2/// forwarding readiness checks to a field.
3///
4/// [`Filter::poll_read_ready`]: crate::Filter::poll_read_ready
5/// [`Filter::poll_write_ready`]: crate::Filter::poll_write_ready
6#[macro_export]
7macro_rules! forward_ready {
8    ($field:ident) => {
9        #[inline]
10        fn poll_read_ready(&self, cx: &mut std::task::Context<'_>) -> Poll<$crate::Readiness> {
11            self.$field.poll_read_ready(cx)
12        }
13
14        #[inline]
15        fn poll_write_ready(&self, cx: &mut std::task::Context<'_>) -> Poll<$crate::Readiness> {
16            self.$field.poll_write_ready(cx)
17        }
18    };
19}
20
21#[macro_export]
22/// Implements [`Filter::query`](crate::Filter::query) by forwarding to a field.
23macro_rules! forward_query {
24    ($field:ident) => {
25        #[inline]
26        fn query(&self, id: std::any::TypeId) -> Option<Box<dyn std::any::Any>> {
27            self.$field.query(id)
28        }
29    };
30}
31
32#[macro_export]
33/// Implements [`Filter::shutdown`](crate::Filter::shutdown) by forwarding to a
34/// field.
35macro_rules! forward_shutdown {
36    ($field:ident) => {
37        #[inline]
38        fn shutdown(
39            &self,
40            ctx: &mut $crate::FilterCtx<'_>,
41        ) -> std::io::Result<std::task::Poll<()>> {
42            self.$field.shutdown(ctx)
43        }
44    };
45}