mirror of
https://github.com/navidrome/navidrome.git
synced 2025-04-13 10:47:19 +03:00
- User events (star, rating, plays) only sent to same user - Don't send to the client (browser window) that originated the event
35 lines
601 B
Go
35 lines
601 B
Go
package events
|
|
|
|
import (
|
|
"context"
|
|
|
|
"code.cloudfoundry.org/go-diodes"
|
|
)
|
|
|
|
type diode struct {
|
|
d *diodes.Waiter
|
|
}
|
|
|
|
func newDiode(ctx context.Context, size int, alerter diodes.Alerter) *diode {
|
|
return &diode{
|
|
d: diodes.NewWaiter(diodes.NewOneToOne(size, alerter), diodes.WithWaiterContext(ctx)),
|
|
}
|
|
}
|
|
|
|
func (d *diode) put(data message) {
|
|
d.d.Set(diodes.GenericDataType(&data))
|
|
}
|
|
|
|
func (d *diode) tryNext() (*message, bool) {
|
|
data, ok := d.d.TryNext()
|
|
if !ok {
|
|
return nil, ok
|
|
}
|
|
return (*message)(data), true
|
|
}
|
|
|
|
func (d *diode) next() *message {
|
|
data := d.d.Next()
|
|
return (*message)(data)
|
|
}
|