aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenauxg <19689618+Henauxg@users.noreply.github.com>2023-01-21 12:06:41 +0100
committerHenauxg <19689618+Henauxg@users.noreply.github.com>2023-01-21 12:06:41 +0100
commit7e66161cbc7cee5a4010458fe54d116a05e6126a (patch)
treea6db47277353abca0df189da8641e69406e98c50
parent919e5427766fad3be301dccb13cfee46c14bd8d5 (diff)
[client & server] Channels only accept Bytes, clone Bytes instead of Vec in send_group_message
-rw-r--r--src/client/connection.rs4
-rw-r--r--src/server.rs7
-rw-r--r--src/shared/channel.rs4
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),