diff --git a/conversations/src/api.rs b/conversations/src/api.rs index 8d3e9c2..3c5f7d7 100644 --- a/conversations/src/api.rs +++ b/conversations/src/api.rs @@ -148,19 +148,28 @@ pub fn send_content( pub fn handle_payload( ctx: &mut ContextHandle, payload: c_slice::Ref<'_, u8>, - mut conversation_id_out: c_slice::Mut<'_, u8>, - conversation_id_out_len: Out<'_, u32>, - mut content_out: c_slice::Mut<'_, u8>, ) -> HandlePayloadResult { - - - + let content = match ctx.0.handle_payload(&payload) { + Some(v) => v, + None => { + return HandlePayloadResult { + error_code: ErrorCode::UnknownError as i32, + convo_id: "".into(), + content: safer_ffi::Vec::EMPTY, + events: Events::None, + }; + } + }; HandlePayloadResult { - error_code: ErrorCode::NotImplemented as i32, - convo_id: "".into(), - content: safer_ffi::Vec::EMPTY, - events: Events::None, + error_code: ErrorCode::None as i32, + convo_id: repr_c::String::from(content.conversation_id), + content: safer_ffi::Vec::from(content.data), + events: if content.isNewConvo { + Events::NewConvo + } else { + Events::None + }, } } diff --git a/conversations/src/context.rs b/conversations/src/context.rs index 9ca7a6e..d806d00 100644 --- a/conversations/src/context.rs +++ b/conversations/src/context.rs @@ -72,6 +72,7 @@ impl Context { Some(ContentData { conversation_id: "convo_id".into(), data: vec![1, 2, 3, 4, 5, 6], + isNewConvo: false, }) } diff --git a/conversations/src/types.rs b/conversations/src/types.rs index 254ab9e..8c0b679 100644 --- a/conversations/src/types.rs +++ b/conversations/src/types.rs @@ -14,6 +14,7 @@ pub struct AddressedEnvelope { pub struct ContentData { pub conversation_id: String, pub data: Vec, + pub isNewConvo: bool, // This feild indicates that } // Internal type Definitions