|
@@ -94,7 +94,6 @@ func (app *application) httpServe() (err error) {
|
|
var (
|
|
var (
|
|
l net.Listener
|
|
l net.Listener
|
|
)
|
|
)
|
|
- app.http = http.New(app.ctx)
|
|
|
|
if l, err = app.gateway.Apply(
|
|
if l, err = app.gateway.Apply(
|
|
entry.Feature(http.MethodGet),
|
|
entry.Feature(http.MethodGet),
|
|
entry.Feature(http.MethodHead),
|
|
entry.Feature(http.MethodHead),
|
|
@@ -141,7 +140,6 @@ func (app *application) commandServe() (err error) {
|
|
var (
|
|
var (
|
|
l net.Listener
|
|
l net.Listener
|
|
)
|
|
)
|
|
- app.command = cli.New(app.ctx)
|
|
|
|
if l, err = app.gateway.Apply(
|
|
if l, err = app.gateway.Apply(
|
|
cli.Feature,
|
|
cli.Feature,
|
|
); err != nil {
|
|
); err != nil {
|
|
@@ -213,23 +211,26 @@ func (app *application) preStart() (err error) {
|
|
app.Log().Infof("server starting")
|
|
app.Log().Infof("server starting")
|
|
env.Set(EnvAppName, app.opts.ShortName())
|
|
env.Set(EnvAppName, app.opts.ShortName())
|
|
env.Set(EnvAppVersion, app.opts.Version)
|
|
env.Set(EnvAppVersion, app.opts.Version)
|
|
- addr = net.JoinHostPort(app.opts.Address, strconv.Itoa(app.opts.Port))
|
|
|
|
- app.Log().Infof("server listen on: %s", addr)
|
|
|
|
- app.gateway = entry.New(addr)
|
|
|
|
- if err = app.gateway.Start(app.ctx); err != nil {
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- if !app.opts.DisableHttp {
|
|
|
|
- if err = app.httpServe(); err != nil {
|
|
|
|
|
|
+ app.http = http.New(app.ctx)
|
|
|
|
+ app.command = cli.New(app.ctx)
|
|
|
|
+ if !app.opts.DisableGateway {
|
|
|
|
+ addr = net.JoinHostPort(app.opts.Address, strconv.Itoa(app.opts.Port))
|
|
|
|
+ app.Log().Infof("server listen on: %s", addr)
|
|
|
|
+ app.gateway = entry.New(addr)
|
|
|
|
+ if err = app.gateway.Start(app.ctx); err != nil {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
- }
|
|
|
|
- if !app.opts.DisableCommand {
|
|
|
|
- if err = app.commandServe(); err != nil {
|
|
|
|
- return
|
|
|
|
|
|
+ if !app.opts.DisableHttp {
|
|
|
|
+ if err = app.httpServe(); err != nil {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if !app.opts.DisableCommand {
|
|
|
|
+ if err = app.commandServe(); err != nil {
|
|
|
|
+ return
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
app.plugins.Range(func(key, value any) bool {
|
|
app.plugins.Range(func(key, value any) bool {
|
|
if plugin, ok := value.(Plugin); ok {
|
|
if plugin, ok := value.(Plugin); ok {
|
|
if err = plugin.BeforeStart(); err != nil {
|
|
if err = plugin.BeforeStart(); err != nil {
|
|
@@ -289,18 +290,20 @@ func (app *application) preStop() (err error) {
|
|
}
|
|
}
|
|
return true
|
|
return true
|
|
})
|
|
})
|
|
- if app.http != nil {
|
|
|
|
- if err = app.http.Shutdown(); err != nil {
|
|
|
|
- app.Log().Warnf("server http shutdown error: %s", err.Error())
|
|
|
|
|
|
+ if !app.opts.DisableGateway {
|
|
|
|
+ if app.http != nil {
|
|
|
|
+ if err = app.http.Shutdown(); err != nil {
|
|
|
|
+ app.Log().Warnf("server http shutdown error: %s", err.Error())
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- }
|
|
|
|
- if app.command != nil {
|
|
|
|
- if err = app.command.Shutdown(); err != nil {
|
|
|
|
- app.Log().Warnf("server command shutdown error: %s", err.Error())
|
|
|
|
|
|
+ if app.command != nil {
|
|
|
|
+ if err = app.command.Shutdown(); err != nil {
|
|
|
|
+ app.Log().Warnf("server command shutdown error: %s", err.Error())
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if err = app.gateway.Stop(); err != nil {
|
|
|
|
+ app.Log().Warnf("server gateway shutdown error: %s", err.Error())
|
|
}
|
|
}
|
|
- }
|
|
|
|
- if err = app.gateway.Stop(); err != nil {
|
|
|
|
- app.Log().Warnf("server gateway shutdown error: %s", err.Error())
|
|
|
|
}
|
|
}
|
|
app.plugins.Range(func(key, value any) bool {
|
|
app.plugins.Range(func(key, value any) bool {
|
|
if plugin, ok := value.(Plugin); ok {
|
|
if plugin, ok := value.(Plugin); ok {
|
|
@@ -345,7 +348,7 @@ func (app *application) Run() (err error) {
|
|
return app.preStop()
|
|
return app.preStop()
|
|
}
|
|
}
|
|
|
|
|
|
-func New(cbs ...Option) *application {
|
|
|
|
|
|
+func New(cbs ...Option) Application {
|
|
opts := NewOptions(cbs...)
|
|
opts := NewOptions(cbs...)
|
|
app := &application{
|
|
app := &application{
|
|
opts: opts,
|
|
opts: opts,
|