command.go 1.3 KB

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