remove event
This commit is contained in:
4 files changed
+1
-192
No files matched your search
Submodule core/src/main/golang/clash updated: 791a7cd647...0380c35d6d.
@@ -1,37 +0,0 @@
|
||||
package event
|
||||
|
||||
import "errors"
|
||||
|
||||
var (
|
||||
handleSend func([]byte)
|
||||
handleClose func()
|
||||
)
|
||||
|
||||
const (
|
||||
EventClose uint32 = 0
|
||||
EventLog uint32 = 1
|
||||
EventProxyChanged uint32 = 2
|
||||
EventTraffic uint32 = 3
|
||||
)
|
||||
|
||||
func SetHandlers(send func([]byte), close func()) error {
|
||||
if handleSend != nil || handleClose != nil {
|
||||
return errors.New("Already registered")
|
||||
}
|
||||
|
||||
handleSend = send
|
||||
handleClose = close
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ClearHandlers() {
|
||||
handleSend = nil
|
||||
handleClose = nil
|
||||
}
|
||||
|
||||
func send(buf []byte) {
|
||||
if handleSend != nil {
|
||||
handleSend(buf)
|
||||
}
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
package event
|
||||
|
||||
import "github.com/Dreamacro/clash/log"
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
import "encoding/binary"
|
||||
|
||||
var logExit chan int = nil
|
||||
|
||||
func StartLogEvent() {
|
||||
if logExit != nil {
|
||||
return
|
||||
}
|
||||
|
||||
go func() {
|
||||
logExit = make(chan int)
|
||||
sub := log.Subscribe()
|
||||
|
||||
defer log.UnSubscribe(sub)
|
||||
defer func() {
|
||||
close(logExit)
|
||||
logExit = nil
|
||||
}()
|
||||
|
||||
for {
|
||||
select {
|
||||
case data := <-sub:
|
||||
log := data.(*log.Event)
|
||||
|
||||
if log == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
var message struct {
|
||||
Type int `json:"type"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
message.Type = levelToInt(log.LogLevel)
|
||||
message.Message = log.Payload
|
||||
|
||||
s, _ := json.Marshal(&message)
|
||||
|
||||
var prefix [4]byte
|
||||
|
||||
binary.BigEndian.PutUint32(prefix[:], EventLog)
|
||||
|
||||
send(append(prefix[:], s[:]...))
|
||||
case <-logExit:
|
||||
return
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func StopLogEvent() {
|
||||
if logExit == nil {
|
||||
return
|
||||
}
|
||||
|
||||
logExit <- 0
|
||||
}
|
||||
|
||||
func levelToInt(level log.LogLevel) int {
|
||||
switch level {
|
||||
case log.DEBUG:
|
||||
return 1
|
||||
case log.INFO:
|
||||
return 2
|
||||
case log.WARNING:
|
||||
return 3
|
||||
case log.ERROR:
|
||||
return 4
|
||||
}
|
||||
|
||||
return 1
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
package event
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"time"
|
||||
|
||||
"encoding/binary"
|
||||
"encoding/json"
|
||||
|
||||
"github.com/Dreamacro/clash/tunnel"
|
||||
)
|
||||
|
||||
var trafficExit chan int = nil
|
||||
|
||||
func StartTrafficEvent() {
|
||||
if trafficExit != nil {
|
||||
return
|
||||
}
|
||||
|
||||
go func() {
|
||||
trafficExit = make(chan int)
|
||||
ticker := time.NewTicker(time.Second)
|
||||
buf := &bytes.Buffer{}
|
||||
traffic := tunnel.DefaultManager
|
||||
var prefix [4]byte
|
||||
|
||||
binary.BigEndian.PutUint32(prefix[:], EventTraffic)
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-ticker.C:
|
||||
buf.Reset()
|
||||
|
||||
binary.Write(buf, binary.BigEndian, EventTraffic)
|
||||
binary.Write(buf, binary.BigEndian, uint32(0))
|
||||
|
||||
var Packet struct {
|
||||
Up int64 `json:"up"`
|
||||
Down int64 `json:"down"`
|
||||
Total int64 `json:"total"`
|
||||
}
|
||||
|
||||
up, down := traffic.Now()
|
||||
snapshot := traffic.Snapshot()
|
||||
|
||||
Packet.Up = up
|
||||
Packet.Down = down
|
||||
Packet.Total = snapshot.DownloadTotal + snapshot.UploadTotal
|
||||
|
||||
json.NewEncoder(buf).Encode(&Packet)
|
||||
|
||||
data := buf.Bytes()
|
||||
|
||||
binary.BigEndian.PutUint32(data[4:], uint32(len(data)-8))
|
||||
|
||||
handleSend(data)
|
||||
case <-trafficExit:
|
||||
ticker.Stop()
|
||||
|
||||
close(trafficExit)
|
||||
trafficExit = nil
|
||||
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
}()
|
||||
}
|
||||
|
||||
func StopTrafficEvent() {
|
||||
if trafficExit == nil {
|
||||
return
|
||||
}
|
||||
|
||||
trafficExit <- 0
|
||||
}
|
||||
Reference in new issue
Block a user