Skip to content

Commit 4494f2b

Browse files
committed
Rename SendMode to SendTargets
1 parent 732b57e commit 4494f2b

11 files changed

Lines changed: 116 additions & 100 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1717
- `ServerMessages::retain_sent` is now public, allowing users to filter outbound messages before the backend drains them.
1818
- `VisibilityFilter` trait and related types moved to the `shared::replication::visibility` module and no longer feature gated by the `server` feature.
1919
- `Replicated` is no longer automatically inserted on clients, only `Remote`. `scene::replicate_into` will serialize all entities that have either `Remote` or `Replicated`.
20+
- Rename `SendMode::Broadcast` into `SendTargets::All`
21+
- Rename `SendMode::BroadcastExcept` into `SendTargets::AllExcept`
22+
- Rename `SendMode::Direct` into `SendTargets::Single`
23+
- Rename `ToClients::mode` into `ToClients::targets`
2024

2125
## [0.39.5] - 2026-04-26
2226

example_backend/tests/backend.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ fn disconnect_request() {
6666

6767
server_app.world_mut().spawn(Replicated);
6868
server_app.world_mut().write_message(ToClients {
69-
mode: SendMode::Broadcast,
69+
targets: SendTargets::All,
7070
message: Test,
7171
});
7272

@@ -117,7 +117,7 @@ fn server_stop() {
117117
server_app.world_mut().remove_resource::<ExampleServer>();
118118
server_app.world_mut().spawn(Replicated);
119119
server_app.world_mut().write_message(ToClients {
120-
mode: SendMode::Broadcast,
120+
targets: SendTargets::All,
121121
message: Test,
122122
});
123123

@@ -190,7 +190,7 @@ fn server_message() {
190190
setup(&mut server_app, &mut client_app).unwrap();
191191

192192
server_app.world_mut().write_message(ToClients {
193-
mode: SendMode::Broadcast,
193+
targets: SendTargets::All,
194194
message: Test,
195195
});
196196

src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ app.add_server_message::<Pong>(Channel::Ordered)
405405
406406
fn send(mut pongs: MessageWriter<ToClients<Pong>>) {
407407
pongs.write(ToClients {
408-
mode: SendMode::Broadcast,
408+
targets: SendTargets::All,
409409
message: Pong,
410410
});
411411
}
@@ -438,7 +438,7 @@ app.add_server_event::<Pong>(Channel::Ordered)
438438
439439
fn send(mut commands: Commands) {
440440
commands.server_trigger(ToClients {
441-
mode: SendMode::Broadcast,
441+
targets: SendTargets::All,
442442
message: Pong,
443443
});
444444
}
@@ -736,7 +736,7 @@ pub mod prelude {
736736
client_event::{ClientEventAppExt, ClientTriggerExt},
737737
client_message::{ClientMessageAppExt, FromClient},
738738
server_event::{ServerEventAppExt, ServerTriggerExt},
739-
server_message::{SendMode, ServerMessageAppExt, ToClients},
739+
server_message::{SendTargets, ServerMessageAppExt, ToClients},
740740
},
741741
protocol::{ProtocolHash, ProtocolHasher, ProtocolMismatch},
742742
replication::{

src/server.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ fn check_protocol(
255255
**client_protocol, *protocol
256256
);
257257
commands.server_trigger(ToClients {
258-
mode: SendMode::Direct(client_protocol.client_id),
258+
targets: SendTargets::Single(client_protocol.client_id),
259259
message: ProtocolMismatch,
260260
});
261261
disconnects.write(DisconnectRequest { client });

src/shared.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ pub struct RepliconSharedPlugin {
7575
// Notify the client about the problem. No delivery
7676
// guarantee, since we disconnect after sending.
7777
commands.server_trigger(ToClients {
78-
mode: SendMode::Direct(client_info.client_id),
78+
targets: SendTargets::Single(client_info.client_id),
7979
message: ProtocolMismatch,
8080
});
8181
disconnects.write(DisconnectRequest { client });

src/shared/message/server_event.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ pub trait ServerTriggerExt {
191191
impl ServerTriggerExt for Commands<'_, '_> {
192192
fn server_trigger(&mut self, event: ToClients<impl Event>) {
193193
self.write_message(ToClients {
194-
mode: event.mode,
194+
targets: event.targets,
195195
message: ServerTriggerEvent {
196196
event: event.message,
197197
},
@@ -202,7 +202,7 @@ impl ServerTriggerExt for Commands<'_, '_> {
202202
impl ServerTriggerExt for World {
203203
fn server_trigger(&mut self, event: ToClients<impl Event>) {
204204
self.write_message(ToClients {
205-
mode: event.mode,
205+
targets: event.targets,
206206
message: ServerTriggerEvent {
207207
event: event.message,
208208
},

src/shared/message/server_message.rs

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -335,30 +335,33 @@ impl ServerMessage {
335335
let to_messages: &Messages<ToClients<M>> = unsafe { to_messages.deref() };
336336
// For server messages we don't track read message because
337337
// all of them will always be drained in the local sending system.
338-
for ToClients { message, mode } in to_messages.get_cursor().read(to_messages) {
339-
debug!("sending message `{}` with `{mode:?}`", ShortName::of::<M>());
338+
for ToClients { message, targets } in to_messages.get_cursor().read(to_messages) {
339+
debug!(
340+
"sending message `{}` for `{targets:?}`",
341+
ShortName::of::<M>()
342+
);
340343

341344
if self.independent {
342345
unsafe {
343346
self.send_independent_message::<M, I>(
344347
ctx,
345348
message,
346-
mode,
349+
*targets,
347350
server_messages,
348351
clients,
349352
)
350353
.expect("independent server message should be serializable");
351354
}
352355
} else {
353356
unsafe {
354-
self.buffer_message::<M, I>(ctx, message, *mode, message_buffer)
357+
self.buffer_message::<M, I>(ctx, message, *targets, message_buffer)
355358
.expect("server message should be serializable");
356359
}
357360
}
358361
}
359362
}
360363

361-
/// Sends independent remote message `M` based on a mode.
364+
/// Sends independent remote message `M` to the given targets.
362365
///
363366
/// # Safety
364367
///
@@ -369,28 +372,28 @@ impl ServerMessage {
369372
&self,
370373
ctx: &mut ServerSendCtx,
371374
message: &M,
372-
mode: &SendMode,
375+
targets: SendTargets,
373376
server_messages: &mut ServerMessages,
374377
clients: &Query<Entity, With<ConnectedClient>>,
375378
) -> Result<()> {
376379
let mut message_bytes = Vec::new();
377380
unsafe { self.serialize::<M, I>(ctx, message, &mut message_bytes)? }
378381
let message_bytes: Bytes = message_bytes.into();
379382

380-
match *mode {
381-
SendMode::Broadcast => {
383+
match targets {
384+
SendTargets::All => {
382385
for client in clients {
383386
server_messages.send(client, self.channel_id, message_bytes.clone());
384387
}
385388
}
386-
SendMode::BroadcastExcept(ignored_id) => {
389+
SendTargets::AllExcept(ignored_id) => {
387390
for client in clients {
388391
if ignored_id != client.into() {
389392
server_messages.send(client, self.channel_id, message_bytes.clone());
390393
}
391394
}
392395
}
393-
SendMode::Direct(client_id) => {
396+
SendTargets::Single(client_id) => {
394397
if let ClientId::Client(client) = client_id {
395398
server_messages.send(client, self.channel_id, message_bytes.clone());
396399
}
@@ -400,7 +403,7 @@ impl ServerMessage {
400403
Ok(())
401404
}
402405

403-
/// Buffers message `M` based on mode.
406+
/// Buffers message `M` for the given targets.
404407
///
405408
/// # Safety
406409
///
@@ -411,11 +414,11 @@ impl ServerMessage {
411414
&self,
412415
ctx: &mut ServerSendCtx,
413416
message: &M,
414-
mode: SendMode,
417+
targets: SendTargets,
415418
message_buffer: &mut MessageBuffer,
416419
) -> Result<()> {
417420
let message_bytes = unsafe { self.serialize_with_padding::<M, I>(ctx, message)? };
418-
message_buffer.insert(mode, self.channel_id, message_bytes);
421+
message_buffer.insert(targets, self.channel_id, message_bytes);
419422
Ok(())
420423
}
421424

@@ -545,18 +548,18 @@ impl ServerMessage {
545548
unsafe fn send_locally_typed<M: Message>(to_messages: PtrMut, messages: PtrMut) {
546549
let to_messages: &mut Messages<ToClients<M>> = unsafe { to_messages.deref_mut() };
547550
let messages: &mut Messages<M> = unsafe { messages.deref_mut() };
548-
for ToClients { message, mode } in to_messages.drain() {
551+
for ToClients { message, targets } in to_messages.drain() {
549552
debug!("writing message `{}` locally", ShortName::of::<M>());
550-
match mode {
551-
SendMode::Broadcast => {
553+
match targets {
554+
SendTargets::All => {
552555
messages.write(message);
553556
}
554-
SendMode::BroadcastExcept(ignored_id) => {
557+
SendTargets::AllExcept(ignored_id) => {
555558
if ignored_id != ClientId::Server {
556559
messages.write(message);
557560
}
558561
}
559-
SendMode::Direct(client_id) => {
562+
SendTargets::Single(client_id) => {
560563
if client_id == ClientId::Server {
561564
messages.write(message);
562565
}
@@ -672,7 +675,7 @@ type ResetFn = unsafe fn(PtrMut);
672675
#[derive(Event, Message, Deref, DerefMut, Debug, Clone, Copy)]
673676
pub struct ToClients<T> {
674677
/// Recipients.
675-
pub mode: SendMode,
678+
pub targets: SendTargets,
676679

677680
/// Transmitted message.
678681
#[deref]
@@ -685,28 +688,32 @@ impl<E: EntityEvent> EntityEvent for ToClients<E> {
685688
}
686689
}
687690

688-
/// Type of server message sending.
691+
/// Recipients of a server message.
689692
#[derive(Clone, Copy, Debug)]
690-
pub enum SendMode {
693+
pub enum SendTargets {
691694
/// Send to every client.
692695
///
693696
/// This will also send the message locally to support listen server configuration.
694697
/// Use [`Self::CLIENTS_ONLY`] if you want to send messages only to the clients.
695-
Broadcast,
696-
/// Send to every client except the specified connected client.
697-
BroadcastExcept(ClientId),
698+
All,
699+
/// Send to everyone except this client.
700+
AllExcept(ClientId),
698701
/// Send only to the specified client.
699-
Direct(ClientId),
702+
Single(ClientId),
700703
}
701704

702-
impl SendMode {
705+
impl SendTargets {
703706
/// Send to every client except the listen server.
704-
pub const CLIENTS_ONLY: SendMode = SendMode::BroadcastExcept(ClientId::Server);
707+
pub const CLIENTS_ONLY: SendTargets = SendTargets::AllExcept(ClientId::Server);
705708

706709
/// Send only to the server.
707-
pub const SERVER_ONLY: SendMode = SendMode::Direct(ClientId::Server);
710+
pub const SERVER_ONLY: SendTargets = SendTargets::Single(ClientId::Server);
708711
}
709712

713+
/// A deprecated alias for [`SendTargets`].
714+
#[deprecated(note = "renamed to `SendTargets`")]
715+
pub type SendMode = SendTargets;
716+
710717
/// Default message serialization function.
711718
pub fn default_serialize<M: Serialize>(
712719
_ctx: &mut ServerSendCtx,

src/shared/message/server_message/message_buffer.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,18 @@ impl MessageBuffer {
3131
self.ticks.last_mut()
3232
}
3333

34-
pub(super) fn insert(&mut self, mode: SendMode, channel_id: usize, message: SerializedMessage) {
34+
pub(super) fn insert(
35+
&mut self,
36+
targets: SendTargets,
37+
channel_id: usize,
38+
message: SerializedMessage,
39+
) {
3540
let buffer = self
3641
.active_tick()
3742
.expect("`start_tick` should be called before buffering");
3843

3944
buffer.messages.push(BufferedMessage {
40-
mode,
45+
targets,
4146
channel_id,
4247
message,
4348
});
@@ -57,8 +62,8 @@ impl MessageBuffer {
5762
) -> Result<()> {
5863
for mut tick in self.ticks.drain(..) {
5964
for mut message in tick.messages.drain(..) {
60-
match message.mode {
61-
SendMode::Broadcast => {
65+
match message.targets {
66+
SendTargets::All => {
6267
for (client, ticks) in
6368
clients.iter().filter(|(e, _)| !tick.excluded.contains(e))
6469
{
@@ -72,7 +77,7 @@ impl MessageBuffer {
7277
}
7378
}
7479
}
75-
SendMode::BroadcastExcept(ignored_id) => {
80+
SendTargets::AllExcept(ignored_id) => {
7681
for (client, ticks) in
7782
clients.iter().filter(|(c, _)| !tick.excluded.contains(c))
7883
{
@@ -90,7 +95,7 @@ impl MessageBuffer {
9095
}
9196
}
9297
}
93-
SendMode::Direct(client_id) => {
98+
SendTargets::Single(client_id) => {
9499
if let ClientId::Client(client) = client_id
95100
&& let Ok((_, ticks)) = clients.get(client)
96101
&& !tick.excluded.contains(&client)
@@ -136,7 +141,7 @@ impl TickMessages {
136141
}
137142

138143
struct BufferedMessage {
139-
mode: SendMode,
144+
targets: SendTargets,
140145
channel_id: usize,
141146
message: SerializedMessage,
142147
}

tests/bidirectional_event.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ fn message() {
2626

2727
client_app.world_mut().write_message(Test);
2828
server_app.world_mut().write_message(ToClients {
29-
mode: SendMode::Broadcast,
29+
targets: SendTargets::All,
3030
message: Test,
3131
});
3232

@@ -72,7 +72,7 @@ fn event() {
7272

7373
client_app.world_mut().client_trigger(Test);
7474
server_app.world_mut().server_trigger(ToClients {
75-
mode: SendMode::Broadcast,
75+
targets: SendTargets::All,
7676
message: Test,
7777
});
7878

tests/server_event.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ fn regular() {
2424
server_app.connect_client(&mut client_app);
2525

2626
server_app.world_mut().server_trigger(ToClients {
27-
mode: SendMode::Broadcast,
27+
targets: SendTargets::All,
2828
message: Test,
2929
});
3030

@@ -56,7 +56,7 @@ fn mapped() {
5656
let server_entity = server_app.world_mut().spawn(Replicated).id();
5757

5858
server_app.world_mut().server_trigger(ToClients {
59-
mode: SendMode::Broadcast,
59+
targets: SendTargets::All,
6060
message: WithEntity(server_entity),
6161
});
6262

@@ -108,7 +108,7 @@ fn without_plugins() {
108108
server_app.connect_client(&mut client_app);
109109

110110
server_app.world_mut().server_trigger(ToClients {
111-
mode: SendMode::Broadcast,
111+
targets: SendTargets::All,
112112
message: Test,
113113
});
114114

@@ -133,7 +133,7 @@ fn local_sending() {
133133
app.init_resource::<EventReader<Test>>();
134134

135135
app.world_mut().server_trigger(ToClients {
136-
mode: SendMode::Broadcast,
136+
targets: SendTargets::All,
137137
message: Test,
138138
});
139139

@@ -181,11 +181,11 @@ fn independent() {
181181
*client_app.world_mut().resource_mut::<ServerUpdateTick>() = Default::default();
182182

183183
server_app.world_mut().server_trigger(ToClients {
184-
mode: SendMode::Broadcast,
184+
targets: SendTargets::All,
185185
message: Test,
186186
});
187187
server_app.world_mut().server_trigger(ToClients {
188-
mode: SendMode::Broadcast,
188+
targets: SendTargets::All,
189189
message: Independent,
190190
});
191191

0 commit comments

Comments
 (0)