コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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;
                }
            }
        }
コード例 #4
0
        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);
        }