| | |
| | | import ( |
| | | "github.com/goburrow/modbus" |
| | | "sync" |
| | | "time" |
| | | ) |
| | | |
| | | type ConnectionManager struct { |
| | |
| | | cm.connections[address] = connection |
| | | } |
| | | |
| | | func (cm *ConnectionManager) CheckConnect(conn modbus.Client, timeout time.Duration) (bool, error) { |
| | | return true, nil |
| | | func (cm *ConnectionManager) RemoveConnection(address string) { |
| | | cm.mu.Lock() |
| | | defer cm.mu.Unlock() |
| | | delete(cm.connections, address) |
| | | } |
| | | |
| | | func getModbusConnection(ipAddr string) modbus.Client { |
| | | if conn, ok := connectionManager.GetConnection(ipAddr); ok { |
| | | return conn |
| | |
| | | return conn |
| | | } |
| | | |
| | | func unsetModbusConnection(ipAddr string) { |
| | | _, ok := connectionManager.GetConnection(ipAddr) |
| | | if !ok { |
| | | return |
| | | } |
| | | connectionManager.RemoveConnection(ipAddr) |
| | | } |
| | | |
| | | func newGetModbusConnection(ipAddr string) modbus.Client { |
| | | return modbus.TCPClient(ipAddr) |
| | | } |