/// <summary> /// 注册DTU(上线DTU注册) /// </summary> /// <param name="dtuid"></param> /// <param name="isnewstate"></param> /// <returns></returns> private GprsDtuConnection RegisterConnection(string dtuid, out bool isnewstate) { isnewstate = false; GprsDtuConnection c; if (!_connectPool.ContainsKey(dtuid)) { c = new GprsDtuConnection(this) { DtuID = dtuid }; _connectPool.TryAdd(c.DtuID, c); // _connectPool[c.DtuID] = c; isnewstate = true; } else { c = _connectPool[dtuid]; if (!c.IsOnline) { isnewstate = true; } } c.DtuID = dtuid; return(c); }
private void FireConnectionStatusChanged(GprsDtuConnection c, WorkingStatus oldStatus, WorkingStatus newStatus) { if (OnConnectStatusChanged != null) { _log.InfoFormat("DtuConnection {0} going {1}", c, newStatus); OnConnectStatusChanged(c, oldStatus, newStatus); } }
/// <summary> /// 更新传感器信息时,添加表中不存在的DTU /// </summary> /// <param name="dtuCode"></param> public void AddDtu(string dtuCode) { if (!_connectPool.ContainsKey(dtuCode)) { var c = new GprsDtuConnection(this) { DtuID = dtuCode }; _connectPool[dtuCode] = c; } _server.Disconnect(dtuCode); }
/// <summary> /// Connect, 注册服务. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void server_ClientConnect(object sender, ZYBEventArgs e) { lock (sender) { bool isnewstate; GprsDtuConnection c = RegisterConnection(e.DTU.ID, out isnewstate); c.UpdateDtuConnection(e); if (!isnewstate) { _log.ErrorFormat("DTU {0} is online twice !!!", e.DTU.ID); return; } FireConnectionStatusChanged(c, WorkingStatus.NA, WorkingStatus.IDLE); } }