| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | package tcimport (	"sync"	"wb/lg"	"wb/st")type ITConn interface {	GetTermId() string	GetType() string	SendCmd(cmd string)	InitDtu(startId ...string) bool	LogInfo(v ...interface{})	LogError(v ...interface{})	Close()}var lockMapConn = sync.Mutex{}var mapConn = make(map[string]ITConn)func AddMConn(mConn ITConn) {	lockMapConn.Lock()	defer lockMapConn.Unlock()	termId := mConn.GetTermId()	oldConn, ok := mapConn[termId]	if ok {		if oldConn != mConn {			//delete(mapConn, termId)			oldConn.Close()			mConn.LogInfo("TC AddMConn new: ", mConn.GetType(), "Id: ", termId)			lg.Info("TC AddMConn  new", termId)		}		lg.Info("TC AddMConn delete old = new", oldConn == mConn)		oldConn.LogInfo("TC AddMConn delete old", termId, " is exist, close it use new connect")	}	mapConn[termId] = mConn	lg.Info("TC AddMConn:", mConn.GetType(), "Id: ", termId)	mConn.LogInfo("TC AddMConn:", termId)}func DeleteConn(mConn ITConn) {	lockMapConn.Lock()	defer lockMapConn.Unlock()	termId := mConn.GetTermId()	oldConn, ok := mapConn[termId]	if ok {		if oldConn == mConn {			//delete(mapConn, termId)			mConn.LogInfo("TC DeleteConn: ", mConn.GetType(), "Id: ", termId)			lg.Info("TC DeleteConn ", termId)		}	}}func SendCmd(sn string, cmd string) {	lockMapConn.Lock()	defer lockMapConn.Unlock()	if bConn, ok := mapConn[sn]; ok {		lg.Info("TC SEND CMD[", cmd, "] TO [", sn, "]")		bConn.SendCmd(cmd)	} else {		lg.Error("SendCmd sn not online:", sn)	}}func InitDtu(sn string, startId string) string {	lockMapConn.Lock()	defer lockMapConn.Unlock()	if bConn, ok := mapConn[sn]; ok {		lg.Info("TC InitDtu startId [", startId, "] TO [", sn, "]")		bConn.InitDtu(startId)	} else {		lg.Error("SendCmd no such sn:", sn)	}	return st.Success}
 |