49 lines
798 B
Go
49 lines
798 B
Go
package streamer
|
|
|
|
// States, Queries and Events
|
|
|
|
type EventType byte
|
|
|
|
const (
|
|
StateNull EventType = iota
|
|
StateReady
|
|
StatePaused
|
|
StatePlaying
|
|
)
|
|
|
|
// Element base struct for all classes with support feedback
|
|
type Element struct {
|
|
events []EventFunc
|
|
}
|
|
|
|
type EventFunc func(msg interface{})
|
|
|
|
func (e *Element) Listen(f EventFunc) {
|
|
e.events = append(e.events, f)
|
|
}
|
|
|
|
func (e *Element) Fire(msg interface{}) {
|
|
for _, f := range e.events {
|
|
f(msg)
|
|
}
|
|
}
|
|
|
|
func (e *Element) Push(msg interface{}) {
|
|
}
|
|
|
|
// Producer and Consumer interfaces
|
|
|
|
type Producer interface {
|
|
Listen(f EventFunc)
|
|
GetMedias() []*Media
|
|
GetTrack(media *Media, codec *Codec) *Track
|
|
Start() error
|
|
Stop() error
|
|
}
|
|
|
|
type Consumer interface {
|
|
Listen(f EventFunc)
|
|
GetMedias() []*Media
|
|
AddTrack(media *Media, track *Track) *Track
|
|
}
|