Skip to content

Commit 70ae8c7

Browse files
authored
Add logging for messages and do not send empty acks (#284)
1 parent 9dc6c2e commit 70ae8c7

4 files changed

Lines changed: 39 additions & 10 deletions

File tree

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Added
11+
12+
- Logging for sending and receiving messages.
13+
14+
### Changed
15+
16+
- Do not send empty ack messages from client.
17+
1018
## [0.26.2] - 2024-06-05
1119

1220
### Added

src/client.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -156,12 +156,14 @@ fn apply_replication(
156156
// (unless user requested history via marker).
157157
let init_tick = *world.resource::<ServerInitTick>();
158158
let acks_size = mem::size_of::<u16>() * client.received_count(ReplicationChannel::Update);
159-
let mut acks = Vec::with_capacity(acks_size);
160-
for message in client.receive(ReplicationChannel::Update) {
161-
let update_index = read_update_message(params, buffered_updates, message)?;
162-
bincode::serialize_into(&mut acks, &update_index)?;
159+
if acks_size != 0 {
160+
let mut acks = Vec::with_capacity(acks_size);
161+
for message in client.receive(ReplicationChannel::Update) {
162+
let update_index = read_update_message(params, buffered_updates, message)?;
163+
bincode::serialize_into(&mut acks, &update_index)?;
164+
}
165+
client.send(ReplicationChannel::Init, acks);
163166
}
164-
client.send(ReplicationChannel::Init, acks);
165167

166168
apply_update_messages(world, params, buffered_updates, init_tick)
167169
}

src/client/replicon_client.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ impl RepliconClient {
6363
.get_mut(channel_id as usize)
6464
.unwrap_or_else(|| panic!("client should have a receive channel with id {channel_id}"));
6565

66+
trace!(
67+
"received {} message(s) from channel {channel_id}",
68+
channel_messages.len()
69+
);
70+
6671
channel_messages.drain(..)
6772
}
6873

@@ -73,7 +78,12 @@ impl RepliconClient {
7378
return;
7479
}
7580

76-
self.sent_messages.push((channel_id.into(), message.into()));
81+
let channel_id: u8 = channel_id.into();
82+
let message: Bytes = message.into();
83+
84+
trace!("sending {} bytes over channel {channel_id}", message.len());
85+
86+
self.sent_messages.push((channel_id, message));
7787
}
7888

7989
/// Sets the client connection status.

src/server/replicon_server.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,17 @@ impl RepliconServer {
5656
}
5757

5858
let channel_id = channel_id.into();
59-
let receive_channel = self
59+
let channel_messages = self
6060
.received_messages
6161
.get_mut(channel_id as usize)
6262
.unwrap_or_else(|| panic!("server should have a receive channel with id {channel_id}"));
6363

64-
receive_channel.drain(..)
64+
trace!(
65+
"received {} message(s) from channel {channel_id}",
66+
channel_messages.len()
67+
);
68+
69+
channel_messages.drain(..)
6570
}
6671

6772
/// Sends a message to a client over a channel.
@@ -76,8 +81,12 @@ impl RepliconServer {
7681
return;
7782
}
7883

79-
self.sent_messages
80-
.push((client_id, channel_id.into(), message.into()));
84+
let channel_id: u8 = channel_id.into();
85+
let message: Bytes = message.into();
86+
87+
trace!("sending {} bytes over channel {channel_id}", message.len());
88+
89+
self.sent_messages.push((client_id, channel_id, message));
8190
}
8291

8392
/// Marks the server as running or stopped.

0 commit comments

Comments
 (0)