mirror of
https://github.com/signalapp/libsignal.git
synced 2024-09-20 12:02:18 +02:00
bridge: Support UUID return values in the FFI bridge
This was already present in the Java and Node bridges; I'm not sure why it was considered a problem in the FFI bridge.
This commit is contained in:
parent
ebf804527c
commit
c58ebfe4ee
@ -246,6 +246,13 @@ impl SimpleArgTypeInfo for uuid::Uuid {
|
||||
}
|
||||
}
|
||||
|
||||
impl ResultTypeInfo for uuid::Uuid {
|
||||
type ResultType = uuid::Bytes;
|
||||
fn convert_into(self) -> SignalFfiResult<Self::ResultType> {
|
||||
Ok(*self.as_bytes())
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! store {
|
||||
($name:ident) => {
|
||||
paste! {
|
||||
@ -530,5 +537,6 @@ macro_rules! ffi_result_type {
|
||||
(Option<String>) => (*const libc::c_char);
|
||||
(Option<&str>) => (*const libc::c_char);
|
||||
(Option<$typ:ty>) => (*mut $typ);
|
||||
(Uuid) => ([u8; 16]);
|
||||
( $typ:ty ) => (*mut $typ);
|
||||
}
|
||||
|
@ -336,17 +336,10 @@ bridge_get_buffer!(
|
||||
SenderKeyMessage::serialized as Serialize -> &[u8],
|
||||
jni = "SenderKeyMessage_1GetSerialized"
|
||||
);
|
||||
bridge_get!(SenderKeyMessage::distribution_id -> Uuid, ffi = false);
|
||||
bridge_get!(SenderKeyMessage::distribution_id -> Uuid);
|
||||
bridge_get!(SenderKeyMessage::chain_id -> u32);
|
||||
bridge_get!(SenderKeyMessage::iteration -> u32);
|
||||
|
||||
// Alternate form that copies into an existing buffer.
|
||||
#[bridge_fn_void(jni = false, node = false)]
|
||||
fn SenderKeyMessageGetDistributionId(out: &mut [u8; 16], obj: &SenderKeyMessage) -> Result<()> {
|
||||
*out = *obj.distribution_id().as_bytes();
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// For testing
|
||||
#[bridge_fn]
|
||||
fn SenderKeyMessage_New(
|
||||
@ -392,20 +385,10 @@ bridge_get_buffer!(
|
||||
SenderKeyDistributionMessage::serialized as Serialize -> &[u8],
|
||||
jni = "SenderKeyDistributionMessage_1GetSerialized"
|
||||
);
|
||||
bridge_get!(SenderKeyDistributionMessage::distribution_id -> Uuid, ffi = false);
|
||||
bridge_get!(SenderKeyDistributionMessage::distribution_id -> Uuid);
|
||||
bridge_get!(SenderKeyDistributionMessage::chain_id -> u32);
|
||||
bridge_get!(SenderKeyDistributionMessage::iteration -> u32);
|
||||
|
||||
// Alternate form that copies into an existing buffer.
|
||||
#[bridge_fn_void(jni = false, node = false)]
|
||||
fn SenderKeyDistributionMessageGetDistributionId(
|
||||
out: &mut [u8; 16],
|
||||
obj: &SenderKeyDistributionMessage,
|
||||
) -> Result<()> {
|
||||
*out = *obj.distribution_id()?.as_bytes();
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// For testing
|
||||
#[bridge_fn]
|
||||
fn SenderKeyDistributionMessage_New(
|
||||
|
@ -586,15 +586,15 @@ SignalFfiError *signal_sender_key_message_serialize(const unsigned char **out,
|
||||
size_t *out_len,
|
||||
const SignalSenderKeyMessage *obj);
|
||||
|
||||
SignalFfiError *signal_sender_key_message_get_distribution_id(uint8_t (*out)[16],
|
||||
const SignalSenderKeyMessage *obj);
|
||||
|
||||
SignalFfiError *signal_sender_key_message_get_chain_id(uint32_t *out,
|
||||
const SignalSenderKeyMessage *obj);
|
||||
|
||||
SignalFfiError *signal_sender_key_message_get_iteration(uint32_t *out,
|
||||
const SignalSenderKeyMessage *obj);
|
||||
|
||||
SignalFfiError *signal_sender_key_message_get_distribution_id(uint8_t (*out)[16],
|
||||
const SignalSenderKeyMessage *obj);
|
||||
|
||||
SignalFfiError *signal_sender_key_message_new(SignalSenderKeyMessage **out,
|
||||
uint8_t message_version,
|
||||
const uint8_t (*distribution_id)[16],
|
||||
@ -620,15 +620,15 @@ SignalFfiError *signal_sender_key_distribution_message_serialize(const unsigned
|
||||
size_t *out_len,
|
||||
const SignalSenderKeyDistributionMessage *obj);
|
||||
|
||||
SignalFfiError *signal_sender_key_distribution_message_get_distribution_id(uint8_t (*out)[16],
|
||||
const SignalSenderKeyDistributionMessage *obj);
|
||||
|
||||
SignalFfiError *signal_sender_key_distribution_message_get_chain_id(uint32_t *out,
|
||||
const SignalSenderKeyDistributionMessage *obj);
|
||||
|
||||
SignalFfiError *signal_sender_key_distribution_message_get_iteration(uint32_t *out,
|
||||
const SignalSenderKeyDistributionMessage *obj);
|
||||
|
||||
SignalFfiError *signal_sender_key_distribution_message_get_distribution_id(uint8_t (*out)[16],
|
||||
const SignalSenderKeyDistributionMessage *obj);
|
||||
|
||||
SignalFfiError *signal_sender_key_distribution_message_new(SignalSenderKeyDistributionMessage **out,
|
||||
uint8_t message_version,
|
||||
const uint8_t (*distribution_id)[16],
|
||||
|
Loading…
Reference in New Issue
Block a user