Devolutions / Devolutions/IronRDP
Create the `ironrdp-sequence` crate and move the framework into it
- Dominant language
- Rust
- Stars
- 3.2k
- Forks
- 275
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 189
Description
Extract the shared, sspi-free state-machine framework into its own low-deps crate so both `ironrdp-connector` and `ironrdp-acceptor` share a clean contract instead of the acceptor leaning on the client connector.
### Scope
- [ ] New crate `ironrdp-sequence` (deps: `ironrdp-pdu`, `ironrdp-core`, `ironrdp-error`). Move `Sequence`, `State`, `Written`, `SequenceError`, `ServerName`, `DesktopSize`.
- Note: with #1423 landed, a `ReactivationSequence` trait is unnecessary — session no longer takes a trait object. Add one only if another consumer needs it; otherwise skip.
- [ ] Re-point `ironrdp-connector` and `ironrdp-acceptor`; keep `ironrdp-connector` re-exports (`pub use ironrdp_sequence::{...}`) so downstream paths stay stable. These are permanent facade re-exports (debt-free kind, per the meta's compatibility policy) — **no** `#[deprecated]`.
- [ ] Add `ironrdp-sequence` to the workspace + `xtask` crate lists.
### Acceptance criteria
- `ironrdp-sequence` has no dependency on `ironrdp-connector` or `sspi`.
- Public API of `ironrdp-connector` unchanged for downstream (verified by re-exports / `cargo public-api` if available).
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating the existing Sequence, State, Written, SequenceError, ServerName, and DesktopSize definitions, then inspect the workspace and xtask crate lists. Re-point ironrdp-connector and ironrdp-acceptor while preserving connector re-exports, and run the relevant Cargo checks plus cargo public-api if available. Done means the new crate has only the listed dependencies, no connector or sspi dependency, and the connector API remains unchanged.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend, build-system
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 52/100