mirror of
https://github.com/logos-messaging/logos-messaging-rust-bindings.git
synced 2026-01-03 06:23:11 +00:00
fix: nwaku does not return an envelope hash on publish
This commit is contained in:
parent
e4fe4dfa63
commit
8eb026d495
@ -6,9 +6,9 @@ use std::time::Duration;
|
||||
// crates
|
||||
use libc::*;
|
||||
// internal
|
||||
use crate::general::{Encoding, MessageId, Result, WakuContentTopic, WakuMessage};
|
||||
use crate::general::{Encoding, Result, WakuContentTopic, WakuMessage};
|
||||
use crate::node::context::WakuNodeContext;
|
||||
use crate::utils::{get_trampoline, handle_no_response, handle_response};
|
||||
use crate::utils::{get_trampoline, handle_no_response, handle_response, LibwakuResponse};
|
||||
|
||||
/// Create a content topic according to [RFC 23](https://rfc.vac.dev/spec/23/)
|
||||
/// As per the [specification](https://rfc.vac.dev/spec/36/#extern-char-waku_content_topicchar-applicationname-unsigned-int-applicationversion-char-contenttopicname-char-encoding)
|
||||
@ -30,8 +30,8 @@ pub fn waku_create_content_topic(
|
||||
.expect("Encoding should always transform to CString")
|
||||
.into_raw();
|
||||
|
||||
let mut result: String = Default::default();
|
||||
let result_cb = |v: &str| result = v.to_string();
|
||||
let mut result: LibwakuResponse = Default::default();
|
||||
let result_cb = |r: LibwakuResponse| result = r;
|
||||
let code = unsafe {
|
||||
let mut closure = result_cb;
|
||||
let cb = get_trampoline(&closure);
|
||||
@ -52,8 +52,7 @@ pub fn waku_create_content_topic(
|
||||
out
|
||||
};
|
||||
|
||||
handle_response::<WakuContentTopic>(code, &result)
|
||||
.expect("&str from result should always be extracted")
|
||||
handle_response(code, result).expect("&str from result should always be extracted")
|
||||
}
|
||||
|
||||
/// Publish a message using Waku Relay
|
||||
@ -63,7 +62,7 @@ pub fn waku_relay_publish_message(
|
||||
message: &WakuMessage,
|
||||
pubsub_topic: &String,
|
||||
timeout: Option<Duration>,
|
||||
) -> Result<MessageId> {
|
||||
) -> Result<()> {
|
||||
let pubsub_topic = pubsub_topic.to_string();
|
||||
|
||||
let message_ptr = CString::new(
|
||||
@ -76,8 +75,8 @@ pub fn waku_relay_publish_message(
|
||||
.expect("CString should build properly from pubsub topic")
|
||||
.into_raw();
|
||||
|
||||
let mut result: String = Default::default();
|
||||
let result_cb = |v: &str| result = v.to_string();
|
||||
let mut result: LibwakuResponse = Default::default();
|
||||
let result_cb = |r: LibwakuResponse| result = r;
|
||||
let code = unsafe {
|
||||
let mut closure = result_cb;
|
||||
let cb = get_trampoline(&closure);
|
||||
@ -103,7 +102,7 @@ pub fn waku_relay_publish_message(
|
||||
out
|
||||
};
|
||||
|
||||
handle_response(code, &result)
|
||||
handle_no_response(code, result)
|
||||
}
|
||||
|
||||
pub fn waku_relay_subscribe(ctx: &WakuNodeContext, pubsub_topic: &String) -> Result<()> {
|
||||
@ -112,10 +111,10 @@ pub fn waku_relay_subscribe(ctx: &WakuNodeContext, pubsub_topic: &String) -> Res
|
||||
.expect("CString should build properly from pubsub topic")
|
||||
.into_raw();
|
||||
|
||||
let mut error: String = Default::default();
|
||||
let error_cb = |v: &str| error = v.to_string();
|
||||
let mut result: LibwakuResponse = Default::default();
|
||||
let result_cb = |r: LibwakuResponse| result = r;
|
||||
let code = unsafe {
|
||||
let mut closure = error_cb;
|
||||
let mut closure = result_cb;
|
||||
let cb = get_trampoline(&closure);
|
||||
let out = waku_sys::waku_relay_subscribe(
|
||||
ctx.obj_ptr,
|
||||
@ -129,7 +128,7 @@ pub fn waku_relay_subscribe(ctx: &WakuNodeContext, pubsub_topic: &String) -> Res
|
||||
out
|
||||
};
|
||||
|
||||
handle_no_response(code, &error)
|
||||
handle_no_response(code, result)
|
||||
}
|
||||
|
||||
pub fn waku_relay_unsubscribe(ctx: &WakuNodeContext, pubsub_topic: &String) -> Result<()> {
|
||||
@ -138,10 +137,10 @@ pub fn waku_relay_unsubscribe(ctx: &WakuNodeContext, pubsub_topic: &String) -> R
|
||||
.expect("CString should build properly from pubsub topic")
|
||||
.into_raw();
|
||||
|
||||
let mut error: String = Default::default();
|
||||
let error_cb = |v: &str| error = v.to_string();
|
||||
let mut result: LibwakuResponse = Default::default();
|
||||
let result_cb = |r: LibwakuResponse| result = r;
|
||||
let code = unsafe {
|
||||
let mut closure = error_cb;
|
||||
let mut closure = result_cb;
|
||||
let cb = get_trampoline(&closure);
|
||||
let out = waku_sys::waku_relay_subscribe(
|
||||
ctx.obj_ptr,
|
||||
@ -155,5 +154,5 @@ pub fn waku_relay_unsubscribe(ctx: &WakuNodeContext, pubsub_topic: &String) -> R
|
||||
out
|
||||
};
|
||||
|
||||
handle_no_response(code, &error)
|
||||
handle_no_response(code, result)
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@ use secp256k1::SecretKey;
|
||||
use serial_test::serial;
|
||||
use std::str::FromStr;
|
||||
use std::time::{Duration, SystemTime};
|
||||
use std::{collections::HashSet, str::from_utf8};
|
||||
use std::{str::from_utf8};
|
||||
use tokio::sync::broadcast::{self, Sender};
|
||||
use tokio::time;
|
||||
use tokio::time::sleep;
|
||||
@ -17,11 +17,9 @@ const TEST_PUBSUBTOPIC: &str = "test";
|
||||
fn try_publish_relay_messages(
|
||||
node: &WakuNodeHandle,
|
||||
msg: &WakuMessage,
|
||||
) -> Result<HashSet<MessageId>, String> {
|
||||
) -> Result<(), String> {
|
||||
let topic = TEST_PUBSUBTOPIC.to_string();
|
||||
Ok(HashSet::from([
|
||||
node.relay_publish_message(msg, &topic, None)?
|
||||
]))
|
||||
Ok(node.relay_publish_message(msg, &topic, None)?)
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
@ -71,17 +69,11 @@ async fn test_echo_messages(
|
||||
let (tx, mut rx) = broadcast::channel(1);
|
||||
set_callback(node2, tx);
|
||||
|
||||
let mut ids = try_publish_relay_messages(node1, &message).expect("send relay messages");
|
||||
try_publish_relay_messages(node1, &message).expect("send relay messages");
|
||||
|
||||
while let Ok(res) = rx.recv().await {
|
||||
if ids.take(&res.id).is_some() {
|
||||
let msg = from_utf8(&res.payload).expect("should be valid message");
|
||||
assert_eq!(content, msg);
|
||||
}
|
||||
|
||||
if ids.is_empty() {
|
||||
break;
|
||||
}
|
||||
assert!(!res.id.is_empty());
|
||||
from_utf8(&res.payload).expect("should be valid message");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user