command_reload.go 942 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //go:build darwin
  2. package libbox
  3. import (
  4. "encoding/binary"
  5. "net"
  6. E "github.com/sagernet/sing/common/exceptions"
  7. "github.com/sagernet/sing/common/rw"
  8. )
  9. func ClientServiceReload(sharedDirectory string) error {
  10. conn, err := clientConnect(sharedDirectory)
  11. if err != nil {
  12. return err
  13. }
  14. defer conn.Close()
  15. err = binary.Write(conn, binary.BigEndian, uint8(CommandServiceReload))
  16. if err != nil {
  17. return err
  18. }
  19. var hasError bool
  20. err = binary.Read(conn, binary.BigEndian, &hasError)
  21. if err != nil {
  22. return err
  23. }
  24. if hasError {
  25. errorMessage, err := rw.ReadVString(conn)
  26. if err != nil {
  27. return err
  28. }
  29. return E.New(errorMessage)
  30. }
  31. return nil
  32. }
  33. func (s *CommandServer) handleServiceReload(conn net.Conn) error {
  34. rErr := s.handler.ServiceReload()
  35. err := binary.Write(conn, binary.BigEndian, rErr != nil)
  36. if err != nil {
  37. return err
  38. }
  39. if rErr != nil {
  40. return rw.WriteVString(conn, rErr.Error())
  41. }
  42. return nil
  43. }