2021-07-07 22:24:26 +08:00
|
|
|
use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
|
2021-11-19 14:38:11 +08:00
|
|
|
use lib_dispatch::prelude::{EventResponse, Payload, StatusCode};
|
2021-07-07 22:24:26 +08:00
|
|
|
|
|
|
|
|
#[derive(ProtoBuf_Enum, Clone, Copy)]
|
|
|
|
|
pub enum FFIStatusCode {
|
2022-01-23 12:14:00 +08:00
|
|
|
Ok = 0,
|
|
|
|
|
Err = 1,
|
2021-08-31 11:32:51 +08:00
|
|
|
Internal = 2,
|
2021-07-07 22:24:26 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl std::default::Default for FFIStatusCode {
|
2022-01-23 12:14:00 +08:00
|
|
|
fn default() -> FFIStatusCode {
|
|
|
|
|
FFIStatusCode::Ok
|
|
|
|
|
}
|
2021-07-07 22:24:26 +08:00
|
|
|
}
|
2021-07-05 23:17:12 +08:00
|
|
|
|
|
|
|
|
#[derive(ProtoBuf, Default)]
|
|
|
|
|
pub struct FFIResponse {
|
|
|
|
|
#[pb(index = 1)]
|
2021-07-07 22:24:26 +08:00
|
|
|
payload: Vec<u8>,
|
2021-07-05 23:17:12 +08:00
|
|
|
|
|
|
|
|
#[pb(index = 2)]
|
2021-07-07 22:24:26 +08:00
|
|
|
code: FFIStatusCode,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl std::convert::From<EventResponse> for FFIResponse {
|
|
|
|
|
fn from(resp: EventResponse) -> Self {
|
|
|
|
|
let payload = match resp.payload {
|
2021-08-20 22:00:03 +08:00
|
|
|
Payload::Bytes(bytes) => bytes.to_vec(),
|
2021-07-07 22:24:26 +08:00
|
|
|
Payload::None => vec![],
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let code = match resp.status_code {
|
|
|
|
|
StatusCode::Ok => FFIStatusCode::Ok,
|
|
|
|
|
StatusCode::Err => FFIStatusCode::Err,
|
2021-08-31 11:32:51 +08:00
|
|
|
StatusCode::Internal => FFIStatusCode::Internal,
|
2021-07-07 22:24:26 +08:00
|
|
|
};
|
|
|
|
|
|
2021-07-21 22:41:44 +08:00
|
|
|
// let msg = match resp.error {
|
|
|
|
|
// None => "".to_owned(),
|
|
|
|
|
// Some(e) => format!("{:?}", e),
|
|
|
|
|
// };
|
|
|
|
|
|
2021-07-12 13:53:32 +08:00
|
|
|
FFIResponse { payload, code }
|
2021-07-07 22:24:26 +08:00
|
|
|
}
|
2021-07-05 23:17:12 +08:00
|
|
|
}
|