Avoid copying message structure in certain case

This commit is contained in:
godmodegalactus 2024-05-17 16:01:16 +02:00
parent f1008f4aff
commit d21031afbf
No known key found for this signature in database
GPG Key ID: 22DA4A30887FDA3C
4 changed files with 17 additions and 19 deletions

View File

@ -26,7 +26,7 @@ impl Client {
let send_stream = connection.open_uni().await?;
send_message(
send_stream,
Message::ConnectionParameters(connection_parameters),
&Message::ConnectionParameters(connection_parameters),
)
.await?;
@ -38,7 +38,7 @@ impl Client {
pub async fn subscribe(&self, filters: Vec<Filter>) -> anyhow::Result<()> {
let send_stream = self.connection.open_uni().await?;
send_message(send_stream, Message::Filters(filters)).await?;
send_message(send_stream, &Message::Filters(filters)).await?;
Ok(())
}

View File

@ -237,20 +237,18 @@ impl ConnectionManager {
for _ in 0..retry_count {
let send_stream = connection.open_uni().await;
match send_stream {
Ok(send_stream) => {
match send_message(send_stream, message.clone()).await {
Ok(_) => {
log::debug!("Message sucessfully sent");
break;
}
Err(e) => {
log::error!(
"error dispatching message and sending data : {}",
e
)
}
Ok(send_stream) => match send_message(send_stream, &message).await {
Ok(_) => {
log::debug!("Message sucessfully sent");
break;
}
}
Err(e) => {
log::error!(
"error dispatching message and sending data : {}",
e
)
}
},
Err(e) => {
log::error!(
"error dispatching message while creating stream : {}",

View File

@ -107,7 +107,7 @@ mod tests {
let connection = connecting.await.unwrap();
let send_stream = connection.open_uni().await.unwrap();
send_message(send_stream, message).await.unwrap();
send_message(send_stream, &message).await.unwrap();
jh.await.unwrap();
}
@ -143,7 +143,7 @@ mod tests {
.unwrap();
let connection = connecting.await.unwrap();
let send_stream = connection.open_uni().await.unwrap();
send_message(send_stream, sent_message).await.unwrap();
send_message(send_stream, &sent_message).await.unwrap();
})
};

View File

@ -2,7 +2,7 @@ use quinn::SendStream;
use crate::message::Message;
pub fn convert_to_binary(message: Message) -> anyhow::Result<Vec<u8>> {
pub fn convert_to_binary(message: &Message) -> anyhow::Result<Vec<u8>> {
let mut binary = bincode::serialize(&message)?;
let size = binary.len() as u64;
// prepend size to the binary object
@ -11,7 +11,7 @@ pub fn convert_to_binary(message: Message) -> anyhow::Result<Vec<u8>> {
Ok(binary)
}
pub async fn send_message(mut send_stream: SendStream, message: Message) -> anyhow::Result<()> {
pub async fn send_message(mut send_stream: SendStream, message: &Message) -> anyhow::Result<()> {
let binary = convert_to_binary(message)?;
send_stream.write_all(&binary).await?;
send_stream.finish().await?;