demux package - github.com/floatdrop/demux - Go Packages
This section is empty.
This section is empty.
func Dynamic[T any, K comparable]( in <-chan T, keyFunc func(T) K, consumeFunc func(K, <-chan T), opts ...Option, )
Dynamic creates dynamic demultiplexer that routes items from 'in' based on keys returned by 'keyFunc'. For each unique key, a new goroutine is spawned running 'consumeFunc'. Each consumeFunc receives a channel that delivers values matching its key. When maxChannels limit is reached, least recently used channels are evicted.
func Static[T any, K comparable](in <-chan T, keyFunc func(T) K, channels map[K]chan<- T)
Static creates Static demultipler that routes each element to channel in channels map by key computed by keyFunc.
Config holds configuration for the dynamic demultiplexer