Skip to content

refactor(core): move AckStream, DropStream, ResponseHandlers and ChanStream into core behind remote-adapter feature#758

Open
LiamCarPer wants to merge 2 commits into
Totodore:mainfrom
LiamCarPer:refactor/move-stream-handlers-to-core
Open

refactor(core): move AckStream, DropStream, ResponseHandlers and ChanStream into core behind remote-adapter feature#758
LiamCarPer wants to merge 2 commits into
Totodore:mainfrom
LiamCarPer:refactor/move-stream-handlers-to-core

Conversation

@LiamCarPer

Copy link
Copy Markdown
Contributor

Motivation

All three remote adapters (redis, postgres, mongodb) independently define AckStream, DropStream, and ResponseHandlers with near-identical code. This duplication makes maintenance harder and is contrary to the goal of #727 (share more code between adapters).

Solution

Move AckStream<S, R, T, E>, DropStream<S, T>, ResponseHandlers, and ChanStream into socketioxide-core behind the existing remote-adapter feature flag. Each adapter now provides a stateless decode function passed as a fn pointer to AckStream::new(), avoiding orphan rule issues that a trait-based approach would cause when implementing on foreign types like Vec.

…Stream into core behind remote-adapter feature

Moves the duplicated stream constructs from all three remote adapters
(redis, postgres, mongodb) into socketioxide-core behind the existing
remote-adapter feature flag. Removes 737 lines of duplicated code.

- DropStream<S, T>: generic cleanup-on-drop stream wrapper
- AckStream<S, R, T, E>: generic ack stream merging local + remote
- ResponseHandlers<T>: generic type alias for HashMap<Sid, mpsc::Sender<T>>
- ChanStream<T>: generic mpsc::Receiver stream wrapper

Each adapter now provides a decode function passed as a fn pointer
to AckStream, avoiding orphan rule issues with trait impls on foreign
types like Vec<u8>.

Closes Totodore#756
@codspeed-hq

codspeed-hq Bot commented Jul 11, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 87 untouched benchmarks


Comparing LiamCarPer:refactor/move-stream-handlers-to-core (520e7ab) with main (8ffc141)

Open in CodSpeed

Comment thread crates/socketioxide-core/src/adapter/mod.rs Fixed
Comment thread crates/socketioxide-core/src/adapter/stream.rs Fixed
Comment thread crates/socketioxide-core/src/adapter/stream.rs Fixed
@Totodore Totodore added A-core Area related to socketioxide-core C-Refactoring Implies a refactoring labels Jul 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-core Area related to socketioxide-core C-Refactoring Implies a refactoring

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Move AckStream, DropStream and ResponseHandlers into core behind the remote-adapter feature flag

3 participants