diff --git a/rpc_client.go b/rpc_client.go index b6bdbb5..975f979 100644 --- a/rpc_client.go +++ b/rpc_client.go @@ -63,12 +63,13 @@ func (cli *RPCClient) CheckConnect() { } func (cli *RPCClient) Push(frame []byte) { - cli.lock.Lock() - defer cli.lock.Unlock() - cli.Frames = append(cli.Frames, frame) - if len(cli.Frames) >= 1000 { - cli.trigger <- true - } + cli.Lock(func() bool { + cli.Frames = append(cli.Frames, frame) + if len(cli.Frames) >= 1000 { + cli.trigger <- true + } + return true + }) } func (cli *RPCClient) run() { @@ -97,13 +98,12 @@ func (cli *RPCClient) run() { var ticker = time.NewTicker(time.Millisecond * 20) buf := bytes.NewBuffer(nil) - for { select { case <-cli.trigger: case <-ticker.C: } - buf.Reset() + cli.Lock(func() bool { Compress(buf, cli.Frames) cli.Frames = cli.Frames[:0] @@ -114,10 +114,10 @@ func (cli *RPCClient) run() { err = stream.Send(&gen.RequestFrames{ Frames: buf.Bytes(), }) - if err != nil { log.Panic(err) } + buf.Reset() } }