🎉: init project

This commit is contained in:
loveuer
2024-07-11 16:37:26 +08:00
commit c46458c6f2
159 changed files with 19246 additions and 0 deletions

43
internal/api/start.go Normal file
View File

@ -0,0 +1,43 @@
package api
import (
"context"
"fmt"
"github.com/loveuer/nf/nft/log"
"net"
"ultone/internal/opt"
"ultone/internal/tool"
)
func Start(ctx context.Context) error {
app := initApp(ctx)
ready := make(chan bool)
ln, err := net.Listen("tcp", opt.Cfg.Listen.Http)
if err != nil {
return fmt.Errorf("api.MustStart: net listen tcp address=%v err=%v", opt.Cfg.Listen.Http, err)
}
go func() {
ready <- true
if err = app.RunListener(ln); err != nil {
log.Panic("api.MustStart: app run err=%v", err)
}
}()
<-ready
go func() {
ready <- true
<-ctx.Done()
if err = app.Shutdown(tool.Timeout(1)); err != nil {
log.Error("api.MustStart: app shutdown err=%v", err)
}
}()
<-ready
return nil
}