Pārlūkot izejas kodu

优化去掉多余无意义的初始化代码

niujiuru 3 nedēļas atpakaļ
vecāks
revīzija
10d4e0a514
2 mainītis faili ar 35 papildinājumiem un 31 dzēšanām
  1. 27 18
      sshd/client/client.go
  2. 8 13
      sshd/sshd.go

+ 27 - 18
sshd/client/client.go

@@ -5,12 +5,14 @@ import (
 	"errors"
 	"fmt"
 	"strings"
+	"sync"
 	"sync/atomic"
 	"time"
 
 	mqtt "github.com/eclipse/paho.mqtt.golang"
 	"github.com/google/uuid"
 	"hnyfkj.com.cn/rtu/linux/baseapp"
+	"hnyfkj.com.cn/rtu/linux/utils/shell"
 )
 
 const MODULE_NAME = "YFKJ_SSH_CLIENT"
@@ -33,19 +35,20 @@ var (
 )
 
 type MQTTCoupler struct {
-	broker, username, password string
-	client                     mqtt.Client
-	clientID                   string
-
-	imei     string // 设备唯一标识
-	subTopic string // 订阅应答主题:/yfkj/device/rpc/imei/ack
-	pubTopic string // 发布指令主题:/yfkj/device/rpc/imei/cmd
-	cwd      string // 当前工作目录
-
 	ctx    context.Context
 	cancel context.CancelFunc
 
-	isConnected atomic.Bool /// 标记是否已连接MQTT的Broker服务
+	broker, username, password string
+
+	client      mqtt.Client
+	clientID    string
+	isConnected atomic.Bool /////// 标记是否已连接MQTT的Broker服务
+
+	imei     string     // 设备唯一标识
+	subTopic string     // 订阅应答主题:/yfkj/device/rpc/imei/ack
+	pubTopic string     // 发布指令主题:/yfkj/device/rpc/imei/cmd
+	cwd      string     // 当前工作目录
+	mu       sync.Mutex // 串行执行的锁
 }
 
 func init() {
@@ -57,14 +60,13 @@ func init() {
 	ctx, cancel := context.WithCancel(context.Background())
 
 	coupler = &MQTTCoupler{
-		broker:      CfgServers.MQTTSrv.Address,
-		username:    CfgServers.MQTTSrv.Username,
-		password:    CfgServers.MQTTSrv.Password,
-		clientID:    uuid.New().String(),
-		cwd:         "/",
-		ctx:         ctx,
-		cancel:      cancel,
-		isConnected: atomic.Bool{},
+		ctx:      ctx,
+		cancel:   cancel,
+		broker:   CfgServers.MQTTSrv.Address,
+		username: CfgServers.MQTTSrv.Username,
+		password: CfgServers.MQTTSrv.Password,
+		clientID: uuid.New().String(),
+		cwd:      "/",
 	}
 }
 
@@ -175,3 +177,10 @@ func (c *MQTTCoupler) connect() error {
 
 	return token.Error()
 }
+
+func (c *MQTTCoupler) ExecuteShell(cmd string) shell.ExecuteResult {
+	c.mu.Lock()
+	defer c.mu.Unlock()
+
+	return shell.ExecuteResult{}
+}

+ 8 - 13
sshd/sshd.go

@@ -37,22 +37,22 @@ var (
 )
 
 type MQTTCoupler struct {
+	ctx    context.Context
+	cancel context.CancelFunc
+
 	broker, username, password string
-	client                     mqtt.Client
+
+	client      mqtt.Client /// MQTT客户端
+	isConnected atomic.Bool /// 标记是否已连接MQTT的Broker服务
 
 	imei     string // 设备唯一标识
 	subTopic string // 订阅指令主题:/yfkj/device/rpc/imei/cmd
 	pubTopic string // 发布应答主题:/yfkj/device/rpc/imei/ack
 
-	ctx    context.Context
-	cancel context.CancelFunc
-
 	///////// 本地执行器, 允许多客户端, 同一客户端串行的执行指令
 	executorMap   map[string]*clientExecutor
 	executorMapMu sync.Mutex
 
-	isConnected atomic.Bool /// 标记是否已连接MQTT的Broker服务
-
 	// 注册本地的远程方法, 连接成功后用于让客户端能够主动下发指令
 	registerRpcMeths *singletask.OnceTask // 注册方法, 单实例
 }
@@ -82,17 +82,12 @@ func ModuleInit(mqttBroker, mqttUsername, mqttPassword string) bool {
 	ctx, cancel := context.WithCancel(context.Background())
 
 	coupler = &MQTTCoupler{
+		ctx:              ctx,
+		cancel:           cancel,
 		broker:           mqttBroker,
 		username:         mqttUsername,
 		password:         mqttPassword,
-		client:           nil,
-		imei:             "",
-		subTopic:         "",
-		pubTopic:         "",
-		ctx:              ctx,
-		cancel:           cancel,
 		executorMap:      make(map[string]*clientExecutor),
-		isConnected:      atomic.Bool{},
 		registerRpcMeths: &singletask.OnceTask{},
 	}