1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- //go:build darwin
- package libbox
- import (
- "encoding/binary"
- "net"
- "runtime/debug"
- E "github.com/sagernet/sing/common/exceptions"
- "github.com/sagernet/sing/common/rw"
- )
- func ClientServiceStop(sharedDirectory string) error {
- conn, err := clientConnect(sharedDirectory)
- if err != nil {
- return err
- }
- defer conn.Close()
- err = binary.Write(conn, binary.BigEndian, uint8(CommandServiceStop))
- if err != nil {
- return err
- }
- var hasError bool
- err = binary.Read(conn, binary.BigEndian, &hasError)
- if err != nil {
- return err
- }
- if hasError {
- errorMessage, err := rw.ReadVString(conn)
- if err != nil {
- return err
- }
- return E.New(errorMessage)
- }
- return nil
- }
- func (s *CommandServer) handleServiceStop(conn net.Conn) error {
- rErr := s.handler.ServiceStop()
- err := binary.Write(conn, binary.BigEndian, rErr != nil)
- if err != nil {
- return err
- }
- if rErr != nil {
- return rw.WriteVString(conn, rErr.Error())
- }
- debug.FreeOSMemory()
- return nil
- }
|