Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var Command = &cli.Command{ Name: "watch", Usage: "Automatically download multiple Live FC2 streams.", Flags: []cli.Flag{ &cli.StringFlag{ Name: "config", Aliases: []string{"c"}, Required: true, Usage: `Config file path. (required)`, Destination: &configPath, }, &cli.StringFlag{ Name: "pprof.listen-address", Value: ":3000", Destination: &pprofListenAddress, }, }, Action: func(cCtx *cli.Context) error { ctx, cancel := context.WithCancel(cCtx.Context) cleanChan := make(chan os.Signal, 1) signal.Notify(cleanChan, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) go func() { <-cleanChan cancel() }() configChan := make(chan *Config) go WatchConfig(ctx, configPath, configChan) go func() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { s := state.ReadState() b, err := json.MarshalIndent(s, "", " ") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } _, err = w.Write(b) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } }) logger.I.Info("listening", zap.String("listenAddress", pprofListenAddress)) if err := http.ListenAndServe(pprofListenAddress, nil); err != nil { logger.I.Fatal("fail to serve http", zap.Error(err)) } logger.I.Fatal("http server stopped") }() return ConfigReloader(ctx, configChan, handleConfig) }, }
Functions ¶
func ConfigReloader ¶
Types ¶
type Config ¶
type Config struct { DefaultParams fc2.OptionalParams `yaml:"defaultParams"` Channels map[string]fc2.OptionalParams `yaml:"channels"` }
Click to show internal directories.
Click to hide internal directories.