ft_sys/
http.rs

1//! Functions and types to work with HTTP requests and responses.
2#[derive(Debug)]
3pub enum Error {}
4
5pub fn send(r: http::Request<bytes::Bytes>) -> Result<http::Response<bytes::Bytes>, Error> {
6    let r: ft_sys_shared::Request = r.into();
7    let (ptr, len) = ft_sys::memory::json_ptr(r);
8    let ptr = unsafe { http_send_request(ptr, len) };
9    let r: ft_sys_shared::Request = ft_sys::memory::json_from_ptr(ptr);
10    Ok(r.into())
11}
12
13unsafe extern "C" {
14    fn http_send_request(ptr: i32, len: i32) -> i32;
15}
16
17/// Get the current request.
18pub fn current_request() -> http::Request<bytes::Bytes> {
19    unsafe extern "C" {
20        fn http_get_request() -> i32;
21    }
22    let ptr = unsafe { http_get_request() };
23    let r: ft_sys_shared::Request = ft_sys::memory::json_from_ptr(ptr);
24    r.into()
25}
26
27/// Send a http response to client.
28///
29/// This function must not be called more than once.
30pub fn send_response(r: http::Response<bytes::Bytes>) {
31    unsafe extern "C" {
32        fn http_send_response(ptr: i32, len: i32);
33    }
34    let r: ft_sys_shared::Request = r.into();
35    let (ptr, len) = ft_sys::memory::json_ptr(r);
36    unsafe { http_send_response(ptr, len) }
37}