command.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package command
  2. //go:generate go run $GOPATH/src/v2ray.com/core/common/errors/errorgen/main.go -pkg command -path App,Log,Command
  3. import (
  4. "context"
  5. grpc "google.golang.org/grpc"
  6. "v2ray.com/core"
  7. "v2ray.com/core/app/log"
  8. "v2ray.com/core/common"
  9. )
  10. type LoggerServer struct {
  11. V *core.Instance
  12. }
  13. func (s *LoggerServer) RestartLogger(ctx context.Context, request *RestartLoggerRequest) (*RestartLoggerResponse, error) {
  14. logger := s.V.GetFeature((*log.Instance)(nil))
  15. if logger == nil {
  16. return nil, newError("unable to get logger instance")
  17. }
  18. if err := logger.Close(); err != nil {
  19. return nil, newError("failed to close logger").Base(err)
  20. }
  21. if err := logger.Start(); err != nil {
  22. return nil, newError("failed to start logger").Base(err)
  23. }
  24. return &RestartLoggerResponse{}, nil
  25. }
  26. type service struct {
  27. v *core.Instance
  28. }
  29. func (s *service) Register(server *grpc.Server) {
  30. RegisterLoggerServiceServer(server, &LoggerServer{
  31. V: s.v,
  32. })
  33. }
  34. func init() {
  35. common.Must(common.RegisterConfig((*Config)(nil), func(ctx context.Context, cfg interface{}) (interface{}, error) {
  36. s := core.MustFromContext(ctx)
  37. return &service{v: s}, nil
  38. }))
  39. }