Skip to content

Consolidate Channel and MultiChannel code and add new features. Fixes #238#239

Open
plorenz wants to merge 1 commit intomainfrom
channel-v5
Open

Consolidate Channel and MultiChannel code and add new features. Fixes #238#239
plorenz wants to merge 1 commit intomainfrom
channel-v5

Conversation

@plorenz
Copy link
Copy Markdown
Member

@plorenz plorenz commented Mar 12, 2026

  • merges MultiChannel into Channel interface, removing the separate
    multi.go implementation and priority.go
  • replaces UnderlayHandler god-interface with focused interfaces:
    Senders, MessageSourceProvider, UnderlayEventListener, and DialPolicy
  • replaces GroupedUnderlayFactory with DialPolicy interface;
    adds BackoffDialPolicy with exponential backoff, short-lived
    connection detection, MinDialInterval, and LastDialTime()
  • replaces UnderlayConstraints helper with Config.Constraints map
    and automatic constraint enforcement with CAS-guarded re-check
  • adds UnderlayEventListener callbacks with Channel parameter so
    consumers can track underlay state changes
  • adds Config.UnderlayEventListeners for consumer listener registration
  • adds Config.ConstraintStartupDelay for delayed constraint application
  • adds NewSingleChannelWithUnderlay for listener-side callers with
    bare underlays
  • adds MessageQueue, MakeSource1/2/3, and RetryToQueues helpers to
    reduce priority sender boilerplate
  • adds TypedBinding, TypedBindHandler, and TypedReceiveHandler generics
    for type-safe senders access during binding and message handling
  • consolidates binding code into bind.go; handler types into handler.go
  • adds comprehensive test suite (72+ tests across 10 files)
  • adds godoc comments to all exported symbols
  • clears waiters on channel close to release map entries eagerly
  • fixes nil dialPolicy panic in applyConstraints
  • fixes deferred re-check race in constraint enforcement

@plorenz plorenz force-pushed the channel-v5 branch 2 times, most recently from 77abc34 to 9ef96d9 Compare March 13, 2026 13:17
@plorenz plorenz marked this pull request as ready for review March 13, 2026 13:18
@plorenz plorenz requested a review from a team as a code owner March 13, 2026 13:18
@plorenz plorenz force-pushed the channel-v5 branch 2 times, most recently from d54c922 to 1e4cf66 Compare March 14, 2026 14:41
#238

- merges MultiChannel into Channel interface, removing the separate
  multi.go implementation and priority.go
- replaces UnderlayHandler god-interface with focused interfaces:
  Senders, MessageSourceProvider, UnderlayEventListener, and DialPolicy
- replaces GroupedUnderlayFactory with DialPolicy interface;
  adds BackoffDialPolicy with exponential backoff, short-lived
  connection detection, MinDialInterval, and LastDialTime()
- replaces UnderlayConstraints helper with Config.Constraints map
  and automatic constraint enforcement with CAS-guarded re-check
- adds UnderlayEventListener callbacks with Channel parameter so
  consumers can track underlay state changes
- adds Config.UnderlayEventListeners for consumer listener registration
- adds Config.ConstraintStartupDelay for delayed constraint application
- adds NewSingleChannelWithUnderlay for listener-side callers with
  bare underlays
- adds MessageQueue, MakeSource1/2/3, and RetryToQueues helpers to
  reduce priority sender boilerplate
- adds TypedBinding, TypedBindHandler, and TypedReceiveHandler generics
  for type-safe senders access during binding and message handling
- consolidates binding code into bind.go; handler types into handler.go
- adds comprehensive test suite (72+ tests across 10 files)
- adds godoc comments to all exported symbols
- clears waiters on channel close to release map entries eagerly
- fixes nil dialPolicy panic in applyConstraints
- fixes deferred re-check race in constraint enforcement
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant