|
|
@@ -443,15 +443,15 @@ func (s *Box) preStart() error {
|
|
|
if err != nil {
|
|
|
return E.Cause(err, "start logger")
|
|
|
}
|
|
|
- err = adapter.StartNamed(adapter.StartStateInitialize, s.internalService) // cache-file clash-api v2ray-api
|
|
|
+ err = adapter.StartNamed(s.logger, adapter.StartStateInitialize, s.internalService) // cache-file clash-api v2ray-api
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- err = adapter.Start(adapter.StartStateInitialize, s.network, s.dnsTransport, s.dnsRouter, s.connection, s.router, s.outbound, s.inbound, s.endpoint, s.service)
|
|
|
+ err = adapter.Start(s.logger, adapter.StartStateInitialize, s.network, s.dnsTransport, s.dnsRouter, s.connection, s.router, s.outbound, s.inbound, s.endpoint, s.service)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- err = adapter.Start(adapter.StartStateStart, s.outbound, s.dnsTransport, s.dnsRouter, s.network, s.connection, s.router)
|
|
|
+ err = adapter.Start(s.logger, adapter.StartStateStart, s.outbound, s.dnsTransport, s.dnsRouter, s.network, s.connection, s.router)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -463,27 +463,27 @@ func (s *Box) start() error {
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- err = adapter.StartNamed(adapter.StartStateStart, s.internalService)
|
|
|
+ err = adapter.StartNamed(s.logger, adapter.StartStateStart, s.internalService)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- err = adapter.Start(adapter.StartStateStart, s.inbound, s.endpoint, s.service)
|
|
|
+ err = adapter.Start(s.logger, adapter.StartStateStart, s.inbound, s.endpoint, s.service)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- err = adapter.Start(adapter.StartStatePostStart, s.outbound, s.network, s.dnsTransport, s.dnsRouter, s.connection, s.router, s.inbound, s.endpoint, s.service)
|
|
|
+ err = adapter.Start(s.logger, adapter.StartStatePostStart, s.outbound, s.network, s.dnsTransport, s.dnsRouter, s.connection, s.router, s.inbound, s.endpoint, s.service)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- err = adapter.StartNamed(adapter.StartStatePostStart, s.internalService)
|
|
|
+ err = adapter.StartNamed(s.logger, adapter.StartStatePostStart, s.internalService)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- err = adapter.Start(adapter.StartStateStarted, s.network, s.dnsTransport, s.dnsRouter, s.connection, s.router, s.outbound, s.inbound, s.endpoint, s.service)
|
|
|
+ err = adapter.Start(s.logger, adapter.StartStateStarted, s.network, s.dnsTransport, s.dnsRouter, s.connection, s.router, s.outbound, s.inbound, s.endpoint, s.service)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- err = adapter.StartNamed(adapter.StartStateStarted, s.internalService)
|
|
|
+ err = adapter.StartNamed(s.logger, adapter.StartStateStarted, s.internalService)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -497,17 +497,42 @@ func (s *Box) Close() error {
|
|
|
default:
|
|
|
close(s.done)
|
|
|
}
|
|
|
- err := common.Close(
|
|
|
- s.service, s.endpoint, s.inbound, s.outbound, s.router, s.connection, s.dnsRouter, s.dnsTransport, s.network,
|
|
|
- )
|
|
|
+ var err error
|
|
|
+ for _, closeItem := range []struct {
|
|
|
+ name string
|
|
|
+ service adapter.Lifecycle
|
|
|
+ }{
|
|
|
+ {"service", s.service},
|
|
|
+ {"endpoint", s.endpoint},
|
|
|
+ {"inbound", s.inbound},
|
|
|
+ {"outbound", s.outbound},
|
|
|
+ {"router", s.router},
|
|
|
+ {"connection", s.connection},
|
|
|
+ {"dns-router", s.dnsRouter},
|
|
|
+ {"dns-transport", s.dnsTransport},
|
|
|
+ {"network", s.network},
|
|
|
+ } {
|
|
|
+ s.logger.Trace("close ", closeItem.name)
|
|
|
+ startTime := time.Now()
|
|
|
+ err = E.Append(err, closeItem.service.Close(), func(err error) error {
|
|
|
+ return E.Cause(err, "close ", closeItem.name)
|
|
|
+ })
|
|
|
+ s.logger.Trace("close ", closeItem.name, " completed (", F.Seconds(time.Since(startTime).Seconds()), "s)")
|
|
|
+ }
|
|
|
for _, lifecycleService := range s.internalService {
|
|
|
+ s.logger.Trace("close ", lifecycleService.Name())
|
|
|
+ startTime := time.Now()
|
|
|
err = E.Append(err, lifecycleService.Close(), func(err error) error {
|
|
|
return E.Cause(err, "close ", lifecycleService.Name())
|
|
|
})
|
|
|
+ s.logger.Trace("close ", lifecycleService.Name(), " completed (", F.Seconds(time.Since(startTime).Seconds()), "s)")
|
|
|
}
|
|
|
+ s.logger.Trace("close logger")
|
|
|
+ startTime := time.Now()
|
|
|
err = E.Append(err, s.logFactory.Close(), func(err error) error {
|
|
|
return E.Cause(err, "close logger")
|
|
|
})
|
|
|
+ s.logger.Trace("close logger completed (", F.Seconds(time.Since(startTime).Seconds()), "s)")
|
|
|
return err
|
|
|
}
|
|
|
|