func internalSend(client *nsqd.ClientV2, frameType int32, data []byte, needFlush bool) error { client.LockWrite() defer client.UnlockWrite() if client.Writer == nil { return errors.New("client closed") } var zeroTime time.Time if client.HeartbeatInterval > 0 { client.SetWriteDeadline(time.Now().Add(client.HeartbeatInterval)) } else { client.SetWriteDeadline(zeroTime) } _, err := protocol.SendFramedResponse(client.Writer, frameType, data) if err != nil { return err } if needFlush || frameType != frameTypeMessage { err = client.Flush() } return err }