ffi_response.rs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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 { FFIStatusCode::Ok }
  11. }
  12. #[derive(ProtoBuf, Default)]
  13. pub struct FFIResponse {
  14. #[pb(index = 1)]
  15. payload: Vec<u8>,
  16. #[pb(index = 2)]
  17. code: FFIStatusCode,
  18. }
  19. impl std::convert::From<EventResponse> for FFIResponse {
  20. fn from(resp: EventResponse) -> Self {
  21. let payload = match resp.payload {
  22. Payload::Bytes(bytes) => bytes.to_vec(),
  23. Payload::None => vec![],
  24. };
  25. let code = match resp.status_code {
  26. StatusCode::Ok => FFIStatusCode::Ok,
  27. StatusCode::Err => FFIStatusCode::Err,
  28. StatusCode::Internal => FFIStatusCode::Internal,
  29. };
  30. // let msg = match resp.error {
  31. // None => "".to_owned(),
  32. // Some(e) => format!("{:?}", e),
  33. // };
  34. FFIResponse { payload, code }
  35. }
  36. }