diff options
author | Henauxg <19689618+Henauxg@users.noreply.github.com> | 2023-01-21 12:06:41 +0100 |
---|---|---|
committer | Henauxg <19689618+Henauxg@users.noreply.github.com> | 2023-01-21 12:06:41 +0100 |
commit | 7e66161cbc7cee5a4010458fe54d116a05e6126a (patch) | |
tree | a6db47277353abca0df189da8641e69406e98c50 /src | |
parent | 919e5427766fad3be301dccb13cfee46c14bd8d5 (diff) |
[client & server] Channels only accept Bytes, clone Bytes instead of Vec in send_group_message
Diffstat (limited to 'src')
-rw-r--r-- | src/client/connection.rs | 4 | ||||
-rw-r--r-- | src/server.rs | 7 | ||||
-rw-r--r-- | src/shared/channel.rs | 4 |
3 files changed, 8 insertions, 7 deletions
diff --git a/src/client/connection.rs b/src/client/connection.rs index 0205ba5..f7538f6 100644 --- a/src/client/connection.rs +++ b/src/client/connection.rs @@ -169,7 +169,7 @@ impl Connection { ConnectionState::Disconnected => Err(QuinnetError::ConnectionClosed), _ => match self.channels.get(&channel_id) { Some(channel) => match bincode::serialize(&message) { - Ok(payload) => channel.send_payload(payload), + Ok(payload) => channel.send_payload(payload.into()), Err(_) => Err(QuinnetError::Serialization), }, None => Err(QuinnetError::UnknownChannel(channel_id)), @@ -208,7 +208,7 @@ impl Connection { match &self.state { ConnectionState::Disconnected => Err(QuinnetError::ConnectionClosed), _ => match self.channels.get(&channel_id) { - Some(channel) => channel.send_payload(payload), + Some(channel) => channel.send_payload(payload.into()), None => Err(QuinnetError::UnknownChannel(channel_id)), }, } diff --git a/src/server.rs b/src/server.rs index 0640637..4740089 100644 --- a/src/server.rs +++ b/src/server.rs @@ -311,8 +311,9 @@ impl Endpoint { ) -> Result<(), QuinnetError> { match bincode::serialize(&message) { Ok(payload) => { + let bytes = Bytes::from(payload); for id in client_ids { - self.send_payload_on(*id, channel_id, payload.clone())?; + self.send_payload_on(*id, channel_id, bytes.clone())?; } Ok(()) } @@ -390,7 +391,7 @@ impl Endpoint { channel_id: ChannelId, payload: T, ) -> Result<(), QuinnetError> { - let payload = payload.into(); + let payload: Bytes = payload.into(); for (_, client_connection) in self.clients.iter() { match client_connection.channels.get(&channel_id) { Some(channel) => channel.send_payload(payload.clone())?, @@ -437,7 +438,7 @@ impl Endpoint { ) -> Result<(), QuinnetError> { if let Some(client_connection) = self.clients.get(&client_id) { match client_connection.channels.get(&channel_id) { - Some(channel) => channel.send_payload(payload), + Some(channel) => channel.send_payload(payload.into()), None => return Err(QuinnetError::UnknownChannel(channel_id)), } } else { diff --git a/src/shared/channel.rs b/src/shared/channel.rs index 192e495..1508dab 100644 --- a/src/shared/channel.rs +++ b/src/shared/channel.rs @@ -74,8 +74,8 @@ impl Channel { } } - pub(crate) fn send_payload<T: Into<Bytes>>(&self, payload: T) -> Result<(), QuinnetError> { - match self.sender.try_send(payload.into()) { + pub(crate) fn send_payload(&self, payload: Bytes) -> Result<(), QuinnetError> { + match self.sender.try_send(payload) { Ok(_) => Ok(()), Err(err) => match err { TrySendError::Full(_) => Err(QuinnetError::FullQueue), |