|
|
@ -46,7 +46,6 @@ type conn struct {
|
|
|
|
|
|
|
|
|
|
|
|
closedOnce sync.Once
|
|
|
|
closedOnce sync.Once
|
|
|
|
readMu sync.Mutex
|
|
|
|
readMu sync.Mutex
|
|
|
|
writeMu sync.Mutex
|
|
|
|
|
|
|
|
err error
|
|
|
|
err error
|
|
|
|
closeCh chan struct{}
|
|
|
|
closeCh chan struct{}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -80,8 +79,6 @@ func (c *conn) Read(b []byte) (n int, err error) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *conn) Write(b []byte) (int, error) {
|
|
|
|
func (c *conn) Write(b []byte) (int, error) {
|
|
|
|
c.writeMu.Lock()
|
|
|
|
|
|
|
|
defer c.writeMu.Unlock()
|
|
|
|
|
|
|
|
m := &controlapi.BytesMessage{Data: b}
|
|
|
|
m := &controlapi.BytesMessage{Data: b}
|
|
|
|
if err := c.stream.SendMsg(m); err != nil {
|
|
|
|
if err := c.stream.SendMsg(m); err != nil {
|
|
|
|
return 0, err
|
|
|
|
return 0, err
|
|
|
@ -96,9 +93,7 @@ func (c *conn) Close() (err error) {
|
|
|
|
}()
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
|
|
if cs, ok := c.stream.(grpc.ClientStream); ok {
|
|
|
|
if cs, ok := c.stream.(grpc.ClientStream); ok {
|
|
|
|
c.writeMu.Lock()
|
|
|
|
|
|
|
|
err = cs.CloseSend()
|
|
|
|
err = cs.CloseSend()
|
|
|
|
c.writeMu.Unlock()
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -111,7 +106,6 @@ func (c *conn) Close() (err error) {
|
|
|
|
err = c.stream.RecvMsg(m)
|
|
|
|
err = c.stream.RecvMsg(m)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
if err != io.EOF {
|
|
|
|
if err != io.EOF {
|
|
|
|
c.readMu.Unlock()
|
|
|
|
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
err = nil
|
|
|
|
err = nil
|
|
|
|