command.go 1.3 KB

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