public void AddHeartBeat(string group, string device, string service, string status) { DateTime posted = DateTime.Now; bool found = false; lock(syncLock) { foreach (HeartBeatInfo item in _info) { if (item.group == group && item.device == device && item.service == service) { item.time = posted; if (item.status == status) { found = true; break; } else { found = true; item.status = status; break; } } } if (!found) { HeartBeatInfo hbi = new HeartBeatInfo { group = group, device = device, service = service, status = status, time = posted }; _info.Add(hbi); } } }
public void HeartBeat(byte[] buffer) { HeartBeatInfo obj = (HeartBeatInfo)DataPacket.RawDeserialize(buffer, typeof(HeartBeatInfo)); //this.OnDataAPPTYPEStatusChange.Raise(OnDataAPPTYPEStatusChange, OnDataAPPTYPEStatusChange.CreateReadOnlyArgs(_APPTYPE.ToString())); NNFHandler.Instance.OnStatusChangeHeartBeatInfo.Raise(NNFHandler.Instance.OnStatusChangeHeartBeatInfo, NNFHandler.Instance.OnStatusChangeHeartBeatInfo.CreateReadOnlyArgs(obj)); Global.LastTime = DateTime.Now; Publisher(MessageType.HEARTBEAT, BitConverter.GetBytes(Global.Instance.ClientId)); Task.Factory.StartNew(() => LogWriterClass.logwritercls.logs("mgtdata", "hartbit")); // Publisher(Structure.MsgTypeC.HEARTBEAT.ToString() + Global.Instance.ClientId, Encoding.ASCII.GetBytes(Global.Instance.ClientId)); }
public static void ParseCore(ref Message msg) { var bodies = msg.Bodies; foreach (var body in bodies) { var core = body.CoreMsg; if (core == null) { return; } var buffer = Unpooled.WrappedBuffer(core); switch (body.IdType) { case IdType.HeartBeat: var heartBeatType = EnumUtil.ToEnum <HeartBeatType>(buffer.ReadInt()); var keepAliveDuration = buffer.ReadInt(); var hb = new HeartBeatInfo(); hb.HeartBeatType = heartBeatType; hb.KeepAliveDuration = keepAliveDuration; body.HeartBeatInfo = hb; break; case IdType.BatteryInfo: var voltage = buffer.ReadFloat(); var temp = buffer.ReadFloat(); var capa = buffer.ReadFloat(); var battery = new BatteryData(); battery.voltage = voltage; battery.batteryTemp = temp; battery.capacity = capa; body.BatteryData = battery; break; case IdType.SensorData: var sensorValues = new List <double>(); do { var value = buffer.ReadFloat(); sensorValues.Add(value); } while (buffer.ReadableBytes > 0); var sensor = new SensorData(); sensor.UnparsedData = sensorValues; body.SensorData = sensor; break; default: break; } } }
public void VerifyStatusCanBeUpdated() { _hbr.Clear(); _hbc.Post("TestGroup", "TestDevice", "TestService", "OK"); IEnumerable <HeartBeatInfo> beats = _hbr.GetHeartBeats(); Assert.Equal(1, beats.Count()); HeartBeatInfo hbi = beats.First(); Assert.Equal("OK", hbi.status); _hbc.Post("TestGroup", "TestDevice", "TestService", "IDLE"); beats = _hbr.GetHeartBeats(); Assert.Equal(1, beats.Count()); hbi = beats.First(); Assert.Equal("IDLE", hbi.status); }