Add file editor Fix android service issues Optimize desktop background performance Optimize android main process performance Optimize delay test Optimize vpn protect
73 lines
1.0 KiB
Go
73 lines
1.0 KiB
Go
//go:build !cgo
|
|
|
|
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"encoding/json"
|
|
"fmt"
|
|
"net"
|
|
"strconv"
|
|
)
|
|
|
|
var conn net.Conn
|
|
|
|
func sendMessage(message Message) {
|
|
res, err := message.Json()
|
|
if err != nil {
|
|
return
|
|
}
|
|
send(Action{
|
|
Method: messageMethod,
|
|
}.wrapMessage(res))
|
|
}
|
|
|
|
func send(data []byte) {
|
|
if conn == nil {
|
|
return
|
|
}
|
|
_, _ = conn.Write(append(data, []byte("\n")...))
|
|
}
|
|
|
|
func startServer(arg string) {
|
|
|
|
_, err := strconv.Atoi(arg)
|
|
|
|
if err != nil {
|
|
conn, err = net.Dial("unix", arg)
|
|
} else {
|
|
conn, err = net.Dial("tcp", fmt.Sprintf("127.0.0.1:%s", arg))
|
|
}
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
|
|
defer func(conn net.Conn) {
|
|
_ = conn.Close()
|
|
}(conn)
|
|
|
|
reader := bufio.NewReader(conn)
|
|
|
|
for {
|
|
data, err := reader.ReadString('\n')
|
|
if err != nil {
|
|
return
|
|
}
|
|
var action = &Action{}
|
|
|
|
err = json.Unmarshal([]byte(data), action)
|
|
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
go handleAction(action, func(bytes []byte) {
|
|
send(bytes)
|
|
})
|
|
}
|
|
}
|
|
|
|
func nextHandle(action *Action, send func([]byte)) bool {
|
|
return false
|
|
}
|