Skip to main content

maplibre_native_ffi/generated/
resource_transform_request.rs

1// Generated from C headers by tools/bindgen. Do not edit.
2use super::*;
3
4native_owner! {
5    /// Owns one native handle.
6    ///
7    /// A URL rewrite that a resource transform answers with the URL to load.
8    ///
9    /// See `mln_resource_transform_request` in the
10    /// [C API reference](https://maplibre.org/maplibre-native-ffi/reference/c/base_8h.html).
11    pub struct ResourceTransformRequestHandle(mln_resource_transform_request) dispose |raw| { unsafe { sys::mln_resource_transform_request_release(raw) }; Ok(()) };
12    /// Returns the native handle value.
13    fn id;
14}
15
16impl ResourceTransformRequestHandle {
17    /// Answers a resource transform request with the URL to load instead.
18    ///
19    /// `url` must not be empty. A failed answer fails the request with
20    /// `ResourceErrorReason::Other`, as
21    /// `ResourceTransformRequestHandle::release()` does.
22    ///
23    /// See `mln_resource_transform_request_complete` in the
24    /// [C API reference](https://maplibre.org/maplibre-native-ffi/reference/c/runtime_8h.html).
25    pub fn complete(self, url: &str) -> Result<()> {
26        self.consume_always(|request| {
27            let mut call = Call::new(request);
28            let url = call.input(&url)?;
29            call.status(|request, out_diagnostic| unsafe {
30                sys::mln_resource_transform_request_complete(request, url, out_diagnostic)
31            })
32        })
33    }
34
35    /// Fails a resource transform request without sending it.
36    ///
37    /// The library retries a request that failed for a reason it retries, such
38    /// as `ResourceErrorReason::Connection`, and the retry calls the transform
39    /// again. When this call fails, the request fails with
40    /// `ResourceErrorReason::Other`, as
41    /// `ResourceTransformRequestHandle::release()` does.
42    ///
43    /// See `mln_resource_transform_request_fail` in the
44    /// [C API reference](https://maplibre.org/maplibre-native-ffi/reference/c/runtime_8h.html).
45    pub fn fail(self, error: &ResourceTransformError<'_>) -> Result<()> {
46        self.consume_always(|request| {
47            let mut call = Call::new(request);
48            let error = call.reference(&error)?;
49            call.status(|request, out_diagnostic| unsafe {
50                sys::mln_resource_transform_request_fail(request, error, out_diagnostic)
51            })
52        })
53    }
54
55    /// Releases a resource transform request.
56    ///
57    /// Releasing a request without an answer fails it with
58    /// `ResourceErrorReason::Other`.
59    ///
60    /// See `mln_resource_transform_request_release` in the
61    /// [C API reference](https://maplibre.org/maplibre-native-ffi/reference/c/runtime_8h.html).
62    pub fn release(self) -> std::result::Result<(), ReleaseError<Self>> {
63        self.consume(|request| {
64            let mut call = Call::new(request);
65            call.run(|request| unsafe { sys::mln_resource_transform_request_release(request) });
66            Ok(())
67        })
68    }
69}