From 8fa6a1bf96472a665aee338e587e951e056eda2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=80=9D=E6=95=8F?= Date: Thu, 1 Sep 2022 16:09:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0TAP=E6=B5=8B=E8=AF=95(TODO=20=E8=A7=A3?= =?UTF-8?q?=E6=9E=90arp)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- netcard.go | 13 ++++----- rpc_client.go | 74 +++++++++++++++++++++++++-------------------------- utils.go | 1 - 3 files changed, 44 insertions(+), 44 deletions(-) diff --git a/netcard.go b/netcard.go index 504dc6c..8ead5b5 100644 --- a/netcard.go +++ b/netcard.go @@ -208,13 +208,14 @@ func (nt *NetTunnel) SendFrames(stream gen.FrameService_SendFramesServer) error if err != nil { log.Panic(err) } + nt.writer <- request.GetFrames() - frames := Decompress(request.GetFrames()) - if len(frames) > 0 { - for _, frame := range frames { - nt.writer <- frame - } - } + // frames := Decompress(request.GetFrames()) + // if len(frames) > 0 { + // for _, frame := range frames { + // nt.writer <- frame + // } + // } }) return nil diff --git a/rpc_client.go b/rpc_client.go index 8725c90..f2b51be 100644 --- a/rpc_client.go +++ b/rpc_client.go @@ -1,19 +1,17 @@ package main import ( - "bytes" "context" "log" gen "slimming/proto/gen" "sync" - "time" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" ) type RPCClient struct { - Frames [][]byte + Frames chan []byte realAddr string conn *grpc.ClientConn @@ -26,7 +24,7 @@ func NewRPCClient(realAddr string) *RPCClient { return &RPCClient{ realAddr: realAddr, - Frames: make([][]byte, 0, 1000), + Frames: make(chan []byte), conn: nil, lock: sync.Mutex{}, trigger: make(chan bool), @@ -67,13 +65,15 @@ func (cli *RPCClient) CheckConnect() { } func (cli *RPCClient) Push(frame []byte) { - cli.Lock(func() bool { - cli.Frames = append(cli.Frames, frame) - if len(cli.Frames) >= 1000 { - cli.trigger <- true - } - return true - }) + + cli.Frames <- frame + // cli.Lock(func() bool { + // cli.Frames = append(cli.Frames, frame) + // if len(cli.Frames) >= 1000 { + // cli.trigger <- true + // } + // return true + // }) } func (cli *RPCClient) run() { @@ -99,44 +99,44 @@ func (cli *RPCClient) run() { } defer stream.CloseSend() - var ticker = time.NewTicker(time.Millisecond * 1) + // var ticker = time.NewTicker(time.Millisecond * 1) - buf := bytes.NewBuffer(nil) - for { + // buf := bytes.NewBuffer(nil) + for buf := range cli.Frames { - select { - case <-cli.trigger: - case <-ticker.C: - } + // select { + // case <-cli.trigger: + // case <-ticker.C: + // } - if !cli.Lock(func() bool { - if len(cli.Frames) == 0 { - return false - } + // if !cli.Lock(func() bool { + // if len(cli.Frames) == 0 { + // return false + // } - Compress(buf, cli.Frames) + // Compress(buf, cli.Frames) - if len(cli.Frames) >= 2 { - var countbuf = 0 - for _, frame := range cli.Frames { - countbuf += len(frame) - } - log.Printf("src size: %d compressed size: %d", countbuf, len(buf.Bytes())) - } + // if len(cli.Frames) >= 2 { + // var countbuf = 0 + // for _, frame := range cli.Frames { + // countbuf += len(frame) + // } + // log.Printf("src size: %d compressed size: %d", countbuf, len(buf.Bytes())) + // } - cli.Frames = cli.Frames[:0] - return true - }) { - continue - } + // cli.Frames = cli.Frames[:0] + // return true + // }) { + // continue + // } // 发到对面的网卡 err = stream.Send(&gen.RequestFrames{ - Frames: buf.Bytes(), + Frames: buf, }) if err != nil { log.Panic(err) } - buf.Reset() + // buf.Reset() } } diff --git a/utils.go b/utils.go index eb4e004..8bfcfae 100644 --- a/utils.go +++ b/utils.go @@ -13,7 +13,6 @@ func Compress(writer io.Writer, data [][]byte) { // encode gob enc := gob.NewEncoder(writer) - err := enc.Encode(data) if err != nil { log.Panic(err)