opendal/layers/
mod.rs

1// Licensed to the Apache Software Foundation (ASF) under one
2// or more contributor license agreements.  See the NOTICE file
3// distributed with this work for additional information
4// regarding copyright ownership.  The ASF licenses this file
5// to you under the Apache License, Version 2.0 (the
6// "License"); you may not use this file except in compliance
7// with the License.  You may obtain a copy of the License at
8//
9//   http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing,
12// software distributed under the License is distributed on an
13// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14// KIND, either express or implied.  See the License for the
15// specific language governing permissions and limitations
16// under the License.
17
18//! `Layer` is the mechanism to intercept operations.
19
20mod type_eraser;
21pub(crate) use type_eraser::TypeEraseLayer;
22
23mod error_context;
24pub(crate) use error_context::ErrorContextLayer;
25
26mod complete;
27pub(crate) use complete::CompleteLayer;
28
29mod concurrent_limit;
30pub use concurrent_limit::ConcurrentLimitLayer;
31
32mod immutable_index;
33pub use immutable_index::ImmutableIndexLayer;
34
35mod logging;
36pub use logging::LoggingInterceptor;
37pub use logging::LoggingLayer;
38
39mod timeout;
40pub use timeout::TimeoutLayer;
41
42#[cfg(feature = "layers-chaos")]
43mod chaos;
44#[cfg(feature = "layers-chaos")]
45pub use chaos::ChaosLayer;
46
47#[cfg(feature = "layers-metrics")]
48mod metrics;
49#[cfg(feature = "layers-metrics")]
50pub use self::metrics::MetricsLayer;
51
52#[cfg(feature = "layers-mime-guess")]
53mod mime_guess;
54#[cfg(feature = "layers-mime-guess")]
55pub use self::mime_guess::MimeGuessLayer;
56
57#[cfg(feature = "layers-prometheus")]
58mod prometheus;
59#[cfg(feature = "layers-prometheus")]
60pub use self::prometheus::PrometheusLayer;
61#[cfg(feature = "layers-prometheus")]
62pub use self::prometheus::PrometheusLayerBuilder;
63
64#[cfg(feature = "layers-prometheus-client")]
65mod prometheus_client;
66#[cfg(feature = "layers-prometheus-client")]
67pub use self::prometheus_client::PrometheusClientLayer;
68#[cfg(feature = "layers-prometheus-client")]
69pub use self::prometheus_client::PrometheusClientLayerBuilder;
70
71#[cfg(feature = "layers-fastmetrics")]
72mod fastmetrics;
73#[cfg(feature = "layers-fastmetrics")]
74pub use self::fastmetrics::FastmetricsLayer;
75#[cfg(feature = "layers-fastmetrics")]
76pub use self::fastmetrics::FastmetricsLayerBuilder;
77
78mod retry;
79pub use self::retry::RetryInterceptor;
80pub use self::retry::RetryLayer;
81
82#[cfg(feature = "layers-tracing")]
83mod tracing;
84#[cfg(feature = "layers-tracing")]
85pub use self::tracing::TracingLayer;
86
87#[cfg(feature = "layers-fastrace")]
88mod fastrace;
89#[cfg(feature = "layers-fastrace")]
90pub use self::fastrace::FastraceLayer;
91
92#[cfg(feature = "layers-otel-metrics")]
93mod otelmetrics;
94#[cfg(feature = "layers-otel-metrics")]
95pub use self::otelmetrics::OtelMetricsLayer;
96
97#[cfg(feature = "layers-otel-trace")]
98mod oteltrace;
99#[cfg(feature = "layers-otel-trace")]
100pub use self::oteltrace::OtelTraceLayer;
101
102#[cfg(feature = "layers-throttle")]
103mod throttle;
104#[cfg(feature = "layers-throttle")]
105pub use self::throttle::ThrottleLayer;
106
107#[cfg(feature = "layers-await-tree")]
108mod await_tree;
109#[cfg(feature = "layers-await-tree")]
110pub use self::await_tree::AwaitTreeLayer;
111
112#[cfg(feature = "layers-async-backtrace")]
113mod async_backtrace;
114#[cfg(feature = "layers-async-backtrace")]
115pub use self::async_backtrace::AsyncBacktraceLayer;
116
117#[cfg(all(target_os = "linux", feature = "layers-dtrace"))]
118mod dtrace;
119#[cfg(all(target_os = "linux", feature = "layers-dtrace"))]
120pub use self::dtrace::DtraceLayer;
121
122pub mod observe;
123
124mod correctness_check;
125pub(crate) use correctness_check::CorrectnessCheckLayer;
126mod capability_check;
127pub use capability_check::CapabilityCheckLayer;
128
129mod http_client;
130pub use http_client::HttpClientLayer;