From da532df0094427efa46f2529b806394567e76758 Mon Sep 17 00:00:00 2001 From: Kr328 <39107975+Kr328@users.noreply.github.com> Date: Sun, 24 Nov 2019 21:47:40 +0800 Subject: [PATCH] create event poll --- core/src/main/golang/server/event.go | 57 ++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 core/src/main/golang/server/event.go diff --git a/core/src/main/golang/server/event.go b/core/src/main/golang/server/event.go new file mode 100644 index 0000000..35ae9ec --- /dev/null +++ b/core/src/main/golang/server/event.go @@ -0,0 +1,57 @@ +package server + +import ( + "encoding/binary" + "github.com/kr328/clash/event" + "net" +) + +func handlePollEvent(client *net.UnixConn) { + var control chan []byte = make(chan []byte, 10) + + defer close(control) + defer event.ClearHandlers() + + var send func([]byte) = func(buf []byte) { + control <- buf + } + + var c func() = func() { + close(control) + } + + defer binary.Write(client, binary.BigEndian, event.EventClose) + + if err := event.SetHandlers(send, c); err != nil { + return + } + + for buf := range control { + if buf == nil { + return + } + + writeCommandPacket(client, buf) + } +} + +func handleSetEventEnabled(client *net.UnixConn) { + var eventType int + var enabled int + var err error + + err = binary.Read(client, binary.BigEndian, &eventType) + if err != nil { + return + } + + err = binary.Read(client, binary.BigEndian, &enabled) + if err != nil { + return + } + + switch eventType { + case event.EventLog: + event.StartLogEvent() + } +}