Skip to content

Commit bf4fac9

Browse files
committed
Remove Config type parameter from MessageSink
Signed-off-by: Didier Wenzek <didier.wenzek@free.fr>
1 parent 9bbb6c8 commit bf4fac9

File tree

26 files changed

+48
-70
lines changed

26 files changed

+48
-70
lines changed

crates/common/batcher/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ impl<B: Batchable> BatchingActorBuilder<B> {
6767
}
6868
}
6969

70-
impl<B: Batchable> MessageSink<BatchDriverInput<B>, NoConfig> for BatchingActorBuilder<B> {
70+
impl<B: Batchable> MessageSink<BatchDriverInput<B>> for BatchingActorBuilder<B> {
7171
fn get_sender(&self) -> DynSender<BatchDriverInput<B>> {
7272
self.message_box.get_sender()
7373
}

crates/core/tedge_actors/src/builders.rs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,14 @@ pub struct NoConfig;
9797
///
9898
/// An actor whose builder is a `MessageSink<M, C>` can be connected to any other actor
9999
/// whose builder is a `MessageSource<M, C>` so that the sink can receive messages from that source.
100-
///
101-
/// A sink might be interested only in a subset of the messages emitted by the source.
102-
/// For that purpose each source implementation defines a `Config` type parameter,
103-
/// and the sink has to provide the configuration value specific to its needs.
104-
pub trait MessageSink<M: Message, Config> {
100+
pub trait MessageSink<M: Message> {
105101
/// Return the sender that can be used by peers to send messages to this actor
106102
fn get_sender(&self) -> DynSender<M>;
107103

108104
/// Add a source of messages to the actor under construction
105+
///
106+
/// A sink might be interested only in a subset of the messages emitted by the source.
107+
/// This subset is defined by the config parameter.
109108
fn add_input<N, C>(&mut self, config: C, source: &mut impl MessageSource<N, C>)
110109
where
111110
N: Message,
@@ -178,13 +177,13 @@ pub trait MessageSink<M: Message, Config> {
178177
/// The [Builder] of an [Actor](crate::Actor) must implement this trait
179178
/// for every message type that actor can send to its peers.
180179
///
181-
/// To receive messages from a `MessageSource<M, C>`, the peer must be a `MessageSink<M, C>`.
180+
/// To receive messages from a `MessageSource<M, C>`, the peer must be a `MessageSink<M>`.
182181
pub trait MessageSource<M: Message, Config> {
183182
/// The message will be sent to the peer using the provided `sender`
184183
fn register_peer(&mut self, config: Config, sender: DynSender<M>);
185184

186185
/// Connect a peer actor that will consume the message produced by this actor
187-
fn add_sink<C>(&mut self, config: Config, peer: &impl MessageSink<M, C>) {
186+
fn add_sink(&mut self, config: Config, peer: &impl MessageSink<M>) {
188187
self.register_peer(config, peer.get_sender());
189188
}
190189
}
@@ -295,7 +294,7 @@ pub trait RuntimeRequestSink {
295294
/// # self.messages.register_peer(config, sender)
296295
/// # }
297296
/// # }
298-
/// # impl MessageSink<MyActorInput, NoConfig> for MyActorBuilder {
297+
/// # impl MessageSink<MyActorInput> for MyActorBuilder {
299298
/// # fn get_sender(&self) -> DynSender<MyActorInput> {
300299
/// # self.messages.get_sender()
301300
/// # }
@@ -378,7 +377,7 @@ impl<I: Message, O: Message> SimpleMessageBoxBuilder<I, O> {
378377
pub fn set_connection<Config>(
379378
&mut self,
380379
config: Config,
381-
service: &mut (impl MessageSink<O, NoConfig> + MessageSource<I, Config>),
380+
service: &mut (impl MessageSink<O> + MessageSource<I, Config>),
382381
) {
383382
service.register_peer(config, self.input_sender.sender_clone());
384383
self.register_peer(NoConfig, service.get_sender());
@@ -391,7 +390,7 @@ impl<I: Message, O: Message> SimpleMessageBoxBuilder<I, O> {
391390
pub fn with_connection<Config>(
392391
mut self,
393392
config: Config,
394-
service: &mut (impl MessageSink<O, NoConfig> + MessageSource<I, Config>),
393+
service: &mut (impl MessageSink<O> + MessageSource<I, Config>),
395394
) -> Self {
396395
self.set_connection(config, service);
397396
self
@@ -406,7 +405,7 @@ impl<I: Message, O: Message, C> MessageSource<O, C> for SimpleMessageBoxBuilder<
406405
}
407406

408407
/// A `SimpleMessageBoxBuilder<Input,Output>` is a [MessageSink] of `Input` messages with no specific config.
409-
impl<I: Message, O: Message> MessageSink<I, NoConfig> for SimpleMessageBoxBuilder<I, O> {
408+
impl<I: Message, O: Message> MessageSink<I> for SimpleMessageBoxBuilder<I, O> {
410409
fn get_sender(&self) -> DynSender<I> {
411410
self.input_sender.sender_clone()
412411
}

crates/core/tedge_actors/src/converter.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ impl<C: Converter> ConvertingActor<C> {
204204
///
205205
/// /// Return a converting actor connected to a peer that is both a source and sink of MQTT messages
206206
/// fn new_converter(
207-
/// mut mqtt_builder: impl MessageSource<MqttMessage, TopicFilter> + MessageSink<MqttMessage, NoConfig>
207+
/// mut mqtt_builder: impl MessageSource<MqttMessage, TopicFilter> + MessageSink<MqttMessage>
208208
/// ) -> ConvertingActor<MyConverter> {
209209
/// // Use a builder to connect and build the actor
210210
/// let mut converter_builder = ConvertingActor::builder(
@@ -264,7 +264,7 @@ impl<C: Converter> MessageSource<C::Output, NoConfig> for ConvertingActorBuilder
264264
}
265265
}
266266

267-
impl<C: Converter> MessageSink<C::Input, NoConfig> for ConvertingActorBuilder<C> {
267+
impl<C: Converter> MessageSink<C::Input> for ConvertingActorBuilder<C> {
268268
fn get_sender(&self) -> DynSender<C::Input> {
269269
self.message_box.get_sender()
270270
}

crates/core/tedge_actors/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,8 @@
219219
//! }
220220
//!
221221
//! /// An actor builder also declares that it consumes messages
222-
//! /// by implementing the `MessageSink` trait for the appropriate input and config types.
223-
//! impl MessageSink<SomeMessage, SomeConfig> for SomeOtherActorBuilder {
222+
//! /// by implementing the `MessageSink` trait for the appropriate input type.
223+
//! impl MessageSink<SomeMessage> for SomeOtherActorBuilder {
224224
//! /// Return a sender where to send the input messages.
225225
//! fn get_sender(&self) -> DynSender<SomeMessage> {
226226
//! todo!()

crates/core/tedge_actors/src/runtime.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ use crate::Builder;
66
use crate::ChannelError;
77
use crate::DynSender;
88
use crate::MessageSink;
9-
use crate::NoConfig;
109
use crate::RuntimeError;
1110
use crate::RuntimeRequestSink;
1211
use futures::channel::mpsc;
@@ -138,7 +137,7 @@ impl RuntimeHandle {
138137
}
139138
}
140139

141-
impl MessageSink<RuntimeAction, NoConfig> for RuntimeHandle {
140+
impl MessageSink<RuntimeAction> for RuntimeHandle {
142141
fn get_sender(&self) -> DynSender<RuntimeAction> {
143142
self.actions_sender.clone().into()
144143
}

crates/core/tedge_actors/src/servers/builders.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ use crate::DynSender;
99
use crate::LoggingReceiver;
1010
use crate::Message;
1111
use crate::MessageSink;
12-
use crate::NoConfig;
1312
use crate::RequestEnvelope;
1413
use crate::RuntimeError;
1514
use crate::RuntimeRequest;
@@ -74,7 +73,7 @@ impl<Req: Message, Res: Message> RuntimeRequestSink for ServerMessageBoxBuilder<
7473
}
7574
}
7675

77-
impl<Req: Message, Res: Message> MessageSink<RequestEnvelope<Req, Res>, NoConfig>
76+
impl<Req: Message, Res: Message> MessageSink<RequestEnvelope<Req, Res>>
7877
for ServerMessageBoxBuilder<Req, Res>
7978
{
8079
fn get_sender(&self) -> DynSender<RequestEnvelope<Req, Res>> {
@@ -184,7 +183,7 @@ impl<S: Server + Clone> Builder<ConcurrentServerActor<S>> for ServerActorBuilder
184183
}
185184
}
186185

187-
impl<S: Server, K> MessageSink<RequestEnvelope<S::Request, S::Response>, NoConfig>
186+
impl<S: Server, K> MessageSink<RequestEnvelope<S::Request, S::Response>>
188187
for ServerActorBuilder<S, K>
189188
{
190189
fn get_sender(&self) -> DynSender<RequestEnvelope<S::Request, S::Response>> {

crates/core/tedge_actors/src/servers/message_boxes.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use crate::LoggingReceiver;
55
use crate::Message;
66
use crate::MessageReceiver;
77
use crate::MessageSink;
8-
use crate::NoConfig;
98
use crate::RequestEnvelope;
109
use crate::RuntimeRequest;
1110
use crate::Sender;
@@ -111,9 +110,7 @@ impl<Request: Message, Response: Message> Clone for ClientMessageBox<Request, Re
111110

112111
impl<Request: Message, Response: Message> ClientMessageBox<Request, Response> {
113112
/// Create a [ClientMessageBox] connected to a given [Server]
114-
pub fn new(
115-
server: &mut impl MessageSink<RequestEnvelope<Request, Response>, NoConfig>,
116-
) -> Self {
113+
pub fn new(server: &mut impl MessageSink<RequestEnvelope<Request, Response>>) -> Self {
117114
ClientMessageBox {
118115
sender: server.get_sender(),
119116
}

crates/core/tedge_actors/src/servers/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,20 +149,20 @@ pub type DynRequestSender<Request, Response> = DynSender<RequestEnvelope<Request
149149

150150
/// A connector to a [Server] expecting Request and returning Response.
151151
pub trait Service<Request: Message, Response: Message>:
152-
MessageSink<RequestEnvelope<Request, Response>, NoConfig>
152+
MessageSink<RequestEnvelope<Request, Response>>
153153
{
154154
/// Connect a request message box to the server box under construction
155155
fn add_requester(&mut self, response_sender: DynSender<Response>) -> DynSender<Request>;
156156

157157
fn add_client(
158158
&mut self,
159-
client: &mut (impl MessageSource<Request, NoConfig> + MessageSink<Response, NoConfig>),
159+
client: &mut (impl MessageSource<Request, NoConfig> + MessageSink<Response>),
160160
);
161161
}
162162

163163
impl<T, Request: Message, Response: Message> Service<Request, Response> for T
164164
where
165-
T: MessageSink<RequestEnvelope<Request, Response>, NoConfig>,
165+
T: MessageSink<RequestEnvelope<Request, Response>>,
166166
{
167167
fn add_requester(&mut self, reply_to: DynSender<Response>) -> DynSender<Request> {
168168
let request_sender = RequestSender {
@@ -174,7 +174,7 @@ where
174174

175175
fn add_client(
176176
&mut self,
177-
client: &mut (impl MessageSource<Request, NoConfig> + MessageSink<Response, NoConfig>),
177+
client: &mut (impl MessageSource<Request, NoConfig> + MessageSink<Response>),
178178
) {
179179
let request_sender = self.add_requester(client.get_sender());
180180
client.register_peer(NoConfig, request_sender);

crates/core/tedge_actors/src/test_helpers.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ impl<I: MessagePlus, O: MessagePlus> Probe<I, O> {
519519
&mut self,
520520
config: C,
521521
source: &mut impl MessageSource<I, C>,
522-
sink: &mut impl MessageSink<O, NoConfig>,
522+
sink: &mut impl MessageSink<O>,
523523
) {
524524
self.output_forwarder = sink.get_sender();
525525
source.register_peer(config, self.input_interceptor.clone().into());
@@ -633,7 +633,7 @@ pub trait ServiceConsumerExt<Request: MessagePlus, Response: MessagePlus> {
633633
impl<T, Request: MessagePlus, Response: MessagePlus> ServiceConsumerExt<Request, Response> for T
634634
where
635635
T: MessageSource<Request, NoConfig>,
636-
T: MessageSink<Response, NoConfig>,
636+
T: MessageSink<Response>,
637637
{
638638
fn with_probe<'a>(
639639
&'a mut self,
@@ -651,7 +651,7 @@ impl<I: MessagePlus, O: MessagePlus> MessageSource<O, NoConfig> for Probe<I, O>
651651
}
652652
}
653653

654-
impl<I: MessagePlus, O: MessagePlus> MessageSink<I, NoConfig> for Probe<I, O> {
654+
impl<I: MessagePlus, O: MessagePlus> MessageSink<I> for Probe<I, O> {
655655
fn get_sender(&self) -> DynSender<I> {
656656
self.input_interceptor.clone().into()
657657
}
@@ -794,7 +794,7 @@ impl<Request: Message, Response: Message> Default for FakeServerBoxBuilder<Reque
794794
}
795795
}
796796

797-
impl<Request: Message, Response: Message> MessageSink<RequestEnvelope<Request, Response>, NoConfig>
797+
impl<Request: Message, Response: Message> MessageSink<RequestEnvelope<Request, Response>>
798798
for FakeServerBoxBuilder<Request, Response>
799799
{
800800
fn get_sender(&self) -> DynSender<RequestEnvelope<Request, Response>> {

crates/core/tedge_agent/src/operation_file_cache/mod.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ use tedge_actors::LoggingReceiver;
2626
use tedge_actors::MessageReceiver;
2727
use tedge_actors::MessageSink;
2828
use tedge_actors::MessageSource;
29-
use tedge_actors::NoConfig;
3029
use tedge_actors::RuntimeError;
3130
use tedge_actors::RuntimeRequest;
3231
use tedge_actors::RuntimeRequestSink;
@@ -291,8 +290,7 @@ impl FileCacheActorBuilder {
291290
tedge_http_host: Arc<str>,
292291
data_dir: DataDir,
293292
downloader_actor: &mut impl Service<IdDownloadRequest, IdDownloadResult>,
294-
mqtt_actor: &mut (impl MessageSource<MqttMessage, TopicFilter>
295-
+ MessageSink<MqttMessage, NoConfig>),
293+
mqtt_actor: &mut (impl MessageSource<MqttMessage, TopicFilter> + MessageSink<MqttMessage>),
296294
) -> Self {
297295
let message_box = SimpleMessageBoxBuilder::new("RestartManager", 10);
298296

@@ -323,7 +321,7 @@ impl FileCacheActorBuilder {
323321
}
324322
}
325323

326-
impl MessageSink<FileCacheInput, NoConfig> for FileCacheActorBuilder {
324+
impl MessageSink<FileCacheInput> for FileCacheActorBuilder {
327325
fn get_sender(&self) -> DynSender<FileCacheInput> {
328326
self.message_box.get_sender()
329327
}

0 commit comments

Comments
 (0)