remove event

This commit is contained in:
Kr328 committed 2019-11-30 02:00:03 +08:00
1 parent 70c8bb19a7
commit 8633ab2de6
4 files changed
+1 -192

No files matched your search

-37
View File
@@ -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)
}
}
-78
View File
@@ -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
}
-76
View File
@@ -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
}