dendrite/syncapi/storage/shared/stream.go
2021-01-06 13:43:28 +00:00

32 lines
525 B
Go

package shared
import (
"sync"
"github.com/matrix-org/dendrite/syncapi/types"
)
type StreamProvider struct {
DB *Database
latest types.StreamPosition
latestMutex sync.RWMutex
update *sync.Cond
}
func (p *StreamProvider) StreamSetup() {
locker := &sync.Mutex{}
p.update = sync.NewCond(locker)
}
func (p *StreamProvider) StreamAdvance(
latest types.StreamPosition,
) {
p.latestMutex.Lock()
defer p.latestMutex.Unlock()
if latest > p.latest {
p.latest = latest
p.update.Broadcast()
}
}