main.go
func main() {
	//go RunTestServer(":8088")
	//go RunTestServer(":8089")
	//go RunTestServer(":8090")

	config := ParseArgs()

	logger, err := CreateLogger(config.LogLevel, "leska")
	utils.HandleErrorWithoutLogger("cannot create logger", err)
	logger.Debugf("start leska with config: %v", config)

	// TODO: прокинуть Repeate-настроки куда нужно
	forwarder, err := CreateForwarder(logger, config.Upstreams)
	utils.HandleError(logger, "cannot create forwarder", err)

	storer, err := storage.StartStorer(logger, config.Storage, config.RepeatNumber,
		5*time.Second, 100000)
	utils.HandleError(logger, "cannot create storer", err)
	defer storer.Stop()

	repeater, err := StartRepeater(logger, forwarder, storer,
		config.RepeatTimeout, config.RepeatNumber)
	utils.HandleError(logger, "cannot create repeater", err)
	defer repeater.Stop()

	err = httpdown.ListenAndServe(
		&http.Server{
			Addr:    config.Address,
			Handler: NewStreamer(logger, storer, forwarder),
		},
		&httpdown.HTTP{
			StopTimeout: 10 * time.Second,
			KillTimeout: 1 * time.Second,
		})
	utils.HandleError(logger, "cannot start server", err)
}
func main() {
	//go RunTestServer(":8088")
	//go RunTestServer(":8089")
	//go RunTestServer(":8090")

	config := ParseArgs()

	logger, err := CreateLogger(config.LogLevel, "leska")
	utils.HandleErrorWithoutLogger("cannot create logger", err)
	logger.Debugf("start leska with config: %v", config)

	// TODO: прокинуть Repeate-настроки куда нужно
	forwarder, err := CreateForwarder(logger, config.Upstreams)
	utils.HandleError(logger, "cannot create forwarder", err)

	storer, err := storage.StartStorer(logger, config.Storage, config.RepeatNumber,
		5*time.Second, 100000)
	utils.HandleError(logger, "cannot create storer", err)
	defer storer.Stop()

	repeater, err := StartRepeater(logger, forwarder, storer,
		config.RepeatTimeout, config.RepeatNumber)
	utils.HandleError(logger, "cannot create repeater", err)
	defer repeater.Stop()

	err = httpdown.ListenAndServe(
		&http.Server{
			Addr:    config.Address,
			Handler: NewStreamer(logger, storer, forwarder),
		},
		&httpdown.HTTP{
			StopTimeout: 10 * time.Second,
			KillTimeout: 1 * time.Second,
		})
	utils.HandleError(logger, "cannot start server", err)
}
func main ( ) { //go RunTestServer(":8088") //go RunTestServer(":8089") //go RunTestServer(":8090") config := ParseArgs ( ) logger , err := CreateLogger ( config . LogLevel , " " ) utils . HandleErrorWithoutLogger ( " " , err ) logger . Debugf ( " " , config ) // TODO: прокинуть Repeate-настроки куда нужно forwarder , err := CreateForwarder ( logger , config . Upstreams ) utils . HandleError ( logger , " " , err ) storer , err := storage . StartStorer ( logger , config . Storage , config . RepeatNumber , 5 * time . Second , 100000 ) utils . HandleError ( logger , " " , err ) defer storer . Stop ( ) repeater , err := StartRepeater ( logger , forwarder , storer , config . RepeatTimeout , config . RepeatNumber ) utils . HandleError ( logger , " " , err ) defer repeater . Stop ( ) err = httpdown . ListenAndServe ( & http . Server { Addr : config . Address , Handler : NewStreamer ( logger , storer , forwarder ) , } , & httpdown . HTTP { StopTimeout : 10 * time . Second , KillTimeout : 1 * time . Second , } ) utils . HandleError ( logger , " " , err ) }
/////////////////////////////////////////////////
// TODO: возможно в эту задачу хорошо подойдет fasthttp. Нужно будет посмотреть
// TODO: на сколько все станет сложнее.
/////////////////////////////////////////////// TODO : возможно в эту задачу хорошо подойдет fasthttp . Нужно будет посмотреть TODO : на сколько все станет сложнее .