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}