sing-box/experimental/libbox/command_power.go

60 lines
1.2 KiB
Go
Raw Permalink Normal View History

2023-03-03 19:26:54 +08:00
package libbox
import (
"encoding/binary"
"net"
2024-06-24 09:49:15 +08:00
"github.com/sagernet/sing/common/varbin"
2023-03-03 19:26:54 +08:00
)
2023-07-02 16:45:30 +08:00
func (c *CommandClient) ServiceReload() error {
conn, err := c.directConnect()
2023-03-03 19:26:54 +08:00
if err != nil {
return err
}
defer conn.Close()
err = binary.Write(conn, binary.BigEndian, uint8(CommandServiceReload))
if err != nil {
return err
}
2025-02-20 14:42:09 +08:00
return readError(conn)
2023-03-03 19:26:54 +08:00
}
func (s *CommandServer) handleServiceReload(conn net.Conn) error {
rErr := s.handler.ServiceReload()
err := binary.Write(conn, binary.BigEndian, rErr != nil)
if err != nil {
return err
}
if rErr != nil {
2024-06-24 09:49:15 +08:00
return varbin.Write(conn, binary.BigEndian, rErr.Error())
2023-03-03 19:26:54 +08:00
}
return nil
}
func (c *CommandClient) ServiceClose() error {
conn, err := c.directConnect()
if err != nil {
return err
}
defer conn.Close()
err = binary.Write(conn, binary.BigEndian, uint8(CommandServiceClose))
if err != nil {
return err
}
2025-02-20 14:42:09 +08:00
return readError(conn)
}
func (s *CommandServer) handleServiceClose(conn net.Conn) error {
rErr := s.service.Close()
s.handler.PostServiceClose()
err := binary.Write(conn, binary.BigEndian, rErr != nil)
if err != nil {
return err
}
if rErr != nil {
2024-06-24 09:49:15 +08:00
return varbin.Write(conn, binary.BigEndian, rErr.Error())
}
return nil
}