53 lines
789 B
Go
53 lines
789 B
Go
package stream
|
|
|
|
import (
|
|
"rkkvm/config"
|
|
"time"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
var ustreamer *UStreamer
|
|
|
|
type UStreamer struct {
|
|
*ExtProcess
|
|
config.UStreamer
|
|
}
|
|
|
|
func InitUStreamer(path string, args []string) *UStreamer {
|
|
ustreamer = &UStreamer{
|
|
ExtProcess: Init(path, args),
|
|
UStreamer: config.Get().UStreamer,
|
|
}
|
|
return ustreamer
|
|
}
|
|
|
|
func GetUStreamer() *UStreamer {
|
|
return ustreamer
|
|
}
|
|
|
|
func (u *UStreamer) MonitorState() {
|
|
ticker := time.NewTicker(1 * time.Second)
|
|
defer ticker.Stop()
|
|
|
|
for {
|
|
select {
|
|
case <-ticker.C:
|
|
{
|
|
state, err := GetState()
|
|
if err != nil {
|
|
u.state = State{}
|
|
log.Errorf("Failed to get process state: %v", err)
|
|
continue
|
|
}
|
|
|
|
u.state = state
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func (u *UStreamer) GetState() State {
|
|
return u.state
|
|
}
|