From 6bc60b02e382cb4a2a3d0a57266d7e3835afe747 Mon Sep 17 00:00:00 2001
From: gongshangguo <gongshangguo@admin.com>
Date: 星期三, 02 三月 2022 16:04:17 +0800
Subject: [PATCH] 业务端口类型

---
 client/client.go |   33 ++++++++++++++++++++-------------
 1 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/client/client.go b/client/client.go
index c4bd957..c6b21ab 100644
--- a/client/client.go
+++ b/client/client.go
@@ -6,6 +6,7 @@
 	"bufio"
 	"encoding/binary"
 	"encoding/json"
+	"errors"
 	uuid "github.com/satori/go.uuid"
 	"go.uber.org/zap"
 	"io"
@@ -22,8 +23,6 @@
 	DefaultHeartbeatInterval = 15 * time.Second
 	// 璇诲彇鏁版嵁瓒呮椂鏃堕棿
 	DefaultReaderTimeOut = 60 * time.Second
-	// 杩炴帴灏濊瘯闂撮殧
-	DefaultNetRetry = 10 * time.Second
 )
 
 // 杩炴帴鐘舵��
@@ -37,8 +36,6 @@
 	// 宸叉柇寮�
 	StateDisconnected
 )
-
-var syncReq map[string]chan *aiot.Protocol
 
 // 杩炴帴鐘舵��
 type State int32
@@ -64,8 +61,6 @@
 	Writer *bufio.Writer
 	// 鍐欏叆閫氶亾
 	writeChan chan []byte
-	// 閫�鍑洪�氶亾
-	exitChan chan int8
 	// 杩炴帴鐘舵��
 	state State
 	// 鎶ユ枃澶�
@@ -113,7 +108,6 @@
 	c.readLock = new(sync.Mutex)
 	c.writeLock = new(sync.Mutex)
 	c.writeChan = make(chan []byte)
-	c.exitChan = make(chan int8)
 	c.state = StateInit
 	c.tmpByte4Slice = make([]byte, 4)
 	c.waitGroup = &util.WaitGroupWrapper{}
@@ -233,7 +227,7 @@
 	}
 
 	// 鍙戦�佹秷鎭�
-	c.WriteBody(body)
+	_ = c.WriteBody(body)
 	return body, nil
 }
 
@@ -243,6 +237,12 @@
 			c.Logger.Error("Write Body Error:", err)
 		}
 	}()
+
+	if c.IsClosed() {
+		errMsg := "Can not write msg into closed chain"
+		c.Logger.Warn(errMsg, zap.Any("msg",body))
+		return errors.New(errMsg)
+	}
 	body.Receiver = aiot.RECEIVER_TO_SAAS
 	msgData, err := json.Marshal(body)
 	if err != nil {
@@ -435,6 +435,11 @@
 	return c.deviceId
 }
 
+// 鑾峰彇杩炴帴鐘舵��
+func (c *Client) GetState() State {
+	return c.state
+}
+
 // 鍒ゆ柇杩炴帴鏄惁鍏抽棴
 func (c *Client) IsClosed() bool {
 	return c.state == StateDisconnected
@@ -452,17 +457,19 @@
 
 // 鍏抽棴TCP
 func (c *Client) Close() {
-	c.Logger.Debug("Closing connect", zap.String("addr", c.addr))
+	c.Logger.Debug("Closing connect...", zap.String("addr", c.addr))
 	c.closeLock.Lock()
 	defer c.closeLock.Unlock()
 	// 鍏抽棴閫氶亾
 	if !c.IsClosed() {
-		c.Conn.Close()
+		_ = c.Conn.Close()
 		if c.IsConnected() {
 			c.clientCallback.OnClose(c)
 		}
-
-		// 璁剧疆杩炴帴灞炴��
-		c.SetState(StateDisconnected)
+		close(c.writeChan)
 	}
+
+	// 璁剧疆杩炴帴灞炴��
+	c.SetState(StateDisconnected)
+	c.Logger.Debug("Connect closed...", zap.String("addr", c.addr))
 }

--
Gitblit v1.8.0