Closed PLeVasseur closed 5 months ago
Hi @sophokles73, @AnotherDaniel, @stevenhartley, @Mallets, @evshary --
Bringing the initial version out of draft. Ready for some feedback :slightly_smiling_face:
I haven't taken a deeper look, but your implementation doesn't depend on any up-client library now, right?
That's right. I have abstracted away completely from any specific up-client-foo-rust
.
I find the code very hard to read and understand due to the lack of comments. In particular, it is still unclear to me why you need that many HashMaps for keeping all sorts of references and counters.
Started to simplify this a bit.
My gut feeling is that you could replace at least the TransportForwarder{Count} maps with just Arcs and tha fact that the forwarders will cease to exist once all Senders have gone out of scope ...
Yeah, I agree that this would work, did this part so far.
I find the code very hard to read and understand due to the lack of comments. In particular, it is still unclear to me why you need that many HashMaps for keeping all sorts of references and counters.
So, I think some of this complexity is inevitable. Given that, I tried to more clearly divide the responsibility for managing the TransportForwarders and ForwardingListeners.
Greatly looking forward to your feedback :slightly_smiling_face:
@PLeVasseur do you want to squash the commits before I merge this?
@PLeVasseur do you want to squash the commits before I merge this?
Yes, I will squash the commits. Will ping you when done
Okay @sophokles73 -- I squashed the commits
Intro
Initial implementation of
up-streamer-rust
to connect point-to-point messages across anyUTransport
implementation, i.e.The implementation of handling Publish messages will come in a second PR.
Background
Hey there :wave:
Based on @stevenhartley's stellar design, I reworked the in-progress first PR I had.
Looking for any feedback you may have :slightly_smiling_face:
Addresses #3
A rework of #7 in which
UTransport
is thread-safeAlso rework of #9, since in this one we used dedicated tasks for output onto a transport when forwarding for efficiency and consistent sequencing.
TODO
up-rust
Performance
Seems to improve performance over #9 and in line with #7
Stats
Non-Thread-Safe: With Channels
# of messages received in 1 second
Thread-Safe: Straightforward Implementation
# of messages received in 1 second
Thread-Safe: Utilizing Async Task for Sender
# of messages received in 1 second