// Copyright 2020, Chef. All rights reserved. // https://github.com/q191201771/lal // // Use of this source code is governed by a MIT-style license // that can be found in the License file. // // Author: Chef (191201771@qq.com) package logic import ( "net/http" _ "net/http/pprof" "os" "strings" "github.com/q191201771/lal/pkg/base" "github.com/q191201771/lal/pkg/hls" "github.com/q191201771/naza/pkg/bininfo" "github.com/q191201771/naza/pkg/nazalog" //"github.com/felixge/fgprof" ) var ( config *Config sm *ServerManager ) // TODO(chef) 临时供innertest使用,后面应该重构 func GetConfig() *Config { return config } func Init(confFile string) { LoadConfAndInitLog(confFile) dir, _ := os.Getwd() nazalog.Infof("wd: %s", dir) nazalog.Infof("args: %s", strings.Join(os.Args, " ")) nazalog.Infof("bininfo: %s", bininfo.StringifySingleLine()) nazalog.Infof("version: %s", base.LalFullInfo) nazalog.Infof("github: %s", base.LalGithubSite) nazalog.Infof("doc: %s", base.LalDocSite) if config.HlsConfig.Enable && config.HlsConfig.UseMemoryAsDiskFlag { nazalog.Infof("hls use memory as disk.") hls.SetUseMemoryAsDiskFlag(true) } if config.RecordConfig.EnableFlv { if err := os.MkdirAll(config.RecordConfig.FlvOutPath, 0777); err != nil { nazalog.Errorf("record flv mkdir error. path=%s, err=%+v", config.RecordConfig.FlvOutPath, err) } if err := os.MkdirAll(config.RecordConfig.MpegtsOutPath, 0777); err != nil { nazalog.Errorf("record mpegts mkdir error. path=%s, err=%+v", config.RecordConfig.MpegtsOutPath, err) } } } func RunLoop() { sm = NewServerManager() if config.PprofConfig.Enable { go runWebPprof(config.PprofConfig.Addr) } go runSignalHandler(func() { sm.Dispose() }) err := sm.RunLoop() nazalog.Errorf("server manager loop break. err=%+v", err) } func Dispose() { sm.Dispose() } func runWebPprof(addr string) { nazalog.Infof("start web pprof listen. addr=%s", addr) //nazalog.Warn("start fgprof.") //http.DefaultServeMux.Handle("/debug/fgprof", fgprof.Handler()) if err := http.ListenAndServe(addr, nil); err != nil { nazalog.Error(err) return } }