ffi_response.rs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
  2. use lib_dispatch::prelude::{EventResponse, Payload, StatusCode};
  3. #[derive(ProtoBuf_Enum, Clone, Copy)]
  4. pub enum FFIStatusCode {
  5. Ok = 0,
  6. Err = 1,
  7. Internal = 2,
  8. }
  9. impl std::default::Default for FFIStatusCode {
  10. fn default() -> FFIStatusCode {
  11. FFIStatusCode::Ok
  12. }
  13. }
  14. #[derive(ProtoBuf, Default)]
  15. pub struct FFIResponse {
  16. #[pb(index = 1)]
  17. payload: Vec<u8>,
  18. #[pb(index = 2)]
  19. code: FFIStatusCode,
  20. }
  21. impl std::convert::From<EventResponse> for FFIResponse {
  22. fn from(resp: EventResponse) -> Self {
  23. let payload = match resp.payload {
  24. Payload::Bytes(bytes) => bytes.to_vec(),
  25. Payload::None => vec![],
  26. };
  27. let code = match resp.status_code {
  28. StatusCode::Ok => FFIStatusCode::Ok,
  29. StatusCode::Err => FFIStatusCode::Err,
  30. StatusCode::Internal => FFIStatusCode::Internal,
  31. };
  32. // let msg = match resp.error {
  33. // None => "".to_owned(),
  34. // Some(e) => format!("{:?}", e),
  35. // };
  36. FFIResponse { payload, code }
  37. }
  38. }