diff --git a/rpc_client.go b/rpc_client.go index 975f979..3001de0 100644 --- a/rpc_client.go +++ b/rpc_client.go @@ -58,7 +58,11 @@ func (cli *RPCClient) CheckConnect() { return } - cli.conn = conn + cli.Lock(func() bool { + cli.conn = conn + return true + }) + go cli.run() } @@ -99,16 +103,22 @@ func (cli *RPCClient) run() { buf := bytes.NewBuffer(nil) for { + select { case <-cli.trigger: case <-ticker.C: } - cli.Lock(func() bool { + if !cli.Lock(func() bool { + if len(cli.Frames) == 0 { + return false + } Compress(buf, cli.Frames) cli.Frames = cli.Frames[:0] return true - }) + }) { + continue + } // 发到对面的网卡 err = stream.Send(&gen.RequestFrames{ @@ -117,7 +127,6 @@ func (cli *RPCClient) run() { if err != nil { log.Panic(err) } - buf.Reset() } }