Exemple #1
0
 async Task RaiseStateChangeEvents(HeartbeatStatus newStatus, DateTime?latestTimestamp)
 {
     if (newStatus == HeartbeatStatus.Alive)
     {
         if (status == HeartbeatStatus.Unknown)
         {
             // NOTE: If an endpoint starts randomly sending heartbeats we monitor it by default
             // NOTE: This means we'll start monitoring endpoints sending heartbeats after a restart
             Monitored = true;
             await domainEvents.Raise(new HeartbeatingEndpointDetected
             {
                 Endpoint   = Convert(Id),
                 DetectedAt = latestTimestamp ?? DateTime.UtcNow
             }).ConfigureAwait(false);
         }
         else if (status == HeartbeatStatus.Dead && Monitored)
         {
             await domainEvents.Raise(new EndpointHeartbeatRestored
             {
                 Endpoint   = Convert(Id),
                 RestoredAt = latestTimestamp ?? DateTime.UtcNow
             }).ConfigureAwait(false);
         }
     }
     else if (newStatus == HeartbeatStatus.Dead && Monitored)
     {
         await domainEvents.Raise(new EndpointFailedToHeartbeat
         {
             Endpoint       = Convert(Id),
             DetectedAt     = DateTime.UtcNow,
             LastReceivedAt = latestTimestamp ?? DateTime.MinValue
         }).ConfigureAwait(false);
     }
 }
Exemple #2
0
 private void WriteLog(PulseEventSource pulseEventSource, HeartbeatStatus status, string logText)
 {
     if (HeartbeatConfiguration.Current.Enabled)
     {
         var log = new HeartbeatLog();
         log.LogDate             = DateTime.Now;
         log.Status              = status;
         log.HeartbeatInstanceId = HeartbeatInstanceId;
         log.ComponentTypeName   = _intiatingTypeName;
         log.LogText             = logText;
         if (pulseEventSource != PulseEventSource.Count)
         {
             log.PulseTimerInterval = PulseTimerInterval;
             log.TimerPulseNumber   = _timerPulseNumber;
             log.TimerMilliseconds  = _timerMilliseconds;
         }
         if (pulseEventSource != PulseEventSource.Timer)
         {
             log.PulseCountInterval = PulseCountInterval;
             log.CountPulseNumber   = _countPulseNumber;
             log.CountNumber        = _count;
         }
         HeartbeatRepository.WriteHeartbeatLog(log);
     }
 }
        public void UpdateStatus(HeartbeatStatus newStatus, DateTime?latestTimestamp)
        {
            if (newStatus != status)
            {
                RaiseStateChangeEvents(newStatus, latestTimestamp);
            }

            lastSeen = latestTimestamp;
            status   = newStatus;
        }
        public void StopHeartbeat()
        {
            if (HeartbeatStatus.Stop == status)
            {
                return;
            }

            GamebaseLog.Debug("Stop Heartbeat", this, "StopHeartbeat");

            status = HeartbeatStatus.Stop;
        }
Exemple #5
0
        public async Task UpdateStatus(HeartbeatStatus newStatus, DateTime?latestTimestamp)
        {
            if (newStatus != status)
            {
                await RaiseStateChangeEvents(newStatus, latestTimestamp)
                .ConfigureAwait(false);
            }

            lastSeen = latestTimestamp;
            status   = newStatus;
        }
Exemple #6
0
        public void HeartbeatStatus_Serialize()
        {
            HeartbeatStatus status;
            XElement        element;

            status  = new HeartbeatStatus(HealthStatus.Warning, "Test Message");
            element = status.ToElement();

            status = new HeartbeatStatus(element);
            Assert.AreEqual(HealthStatus.Warning, status.Status);
            Assert.AreEqual("Test Message", status.Message);
        }
Exemple #7
0
 private void HandleHeartbeatMessage(Message heartbeatMessage)
 {
     if (heartbeatMessage.FromDevice.Equals(Message.SERVER))
     {
         //Send back to sender
         EnqueueMessage(heartbeatMessage);
     }
     else if (heartbeatMessage.FromDevice.Equals(DeviceName))
     {
         heartbeatStatus = HeartbeatStatus.OK;
     }
 }
Exemple #8
0
        public void StartHeartbeat()
        {
            if (false == IsSendable())
            {
                return;
            }

            GamebaseLog.Debug("Start Heartbeat", this);

            status = HeartbeatStatus.Start;
            GamebaseCoroutineManager.StartCoroutine(GamebaseGameObjectManager.GameObjectType.HEARTBEAT_TYPE, ExecuteHeartbeat());
        }
        public void StartHeartbeat()
        {
            if (false == IsSendable())
            {
                return;
            }

            GamebaseLog.Debug("Start Heartbeat", this, "StartHeartbeat");

            status = HeartbeatStatus.Start;
            GamebaseUnitySDKSettings.Instance.StartCoroutine(ExecuteHeartbeat());
        }
Exemple #10
0
 private void HandleHeartbeatMessage(Message heartbeatMessage)
 {
     if (heartbeatMessage.FromDevice.Equals(Message.SERVER))
     {
         //If the heartbeat is initiated by the server, we return it
         EnqueueMessage(heartbeatMessage);
     }
     else if (heartbeatMessage.FromDevice.Equals(DeviceName))
     {
         //If the heartbeat was initiated by "me", the device, it means that the server and the connection are working
         heartbeatStatus = HeartbeatStatus.OK;
     }
 }
Exemple #11
0
        public void Heartbeat(Object stateInfo)
        {
            if (heartbeatStatus == HeartbeatStatus.NOK)
            {
                throw new Exception();
            }

            if (heartbeatStatus == HeartbeatStatus.Waiting)
            {
                heartbeatStatus = HeartbeatStatus.NOK;
            }

            Message heartbeatMessage = Message.InstanciateHeartbeatMessage(DeviceName);

            EnqueueMessage(heartbeatMessage);
            heartbeatStatus = HeartbeatStatus.Waiting;
        }
Exemple #12
0
        private void Heartbeat(Object stateInfo)
        {
            if (heartbeatStatus == HeartbeatStatus.NOK)
            {
                //AUTORECONNECT : if we do not get any answer from the server, we reboot
                Microsoft.SPOT.Hardware.PowerState.RebootDevice(false, 10000);
            }

            if (heartbeatStatus == HeartbeatStatus.Waiting)
            {
                heartbeatStatus = HeartbeatStatus.NOK;
            }

            Message heartbeatMessage = Message.InstanciateHeartbeatMessage(DeviceName);

            EnqueueMessage(heartbeatMessage);

            if (heartbeatStatus == HeartbeatStatus.OK)
            {
                heartbeatStatus = HeartbeatStatus.Waiting;
            }
        }
Exemple #13
0
 private void WriteLog(PulseEventSource pulseEventSource, HeartbeatStatus status, string logText)
 {
     if (HeartbeatConfiguration.Current.Enabled)
     {
         var log = new HeartbeatLog();
         log.LogDate = DateTime.Now;
         log.Status = status;
         log.HeartbeatInstanceId = HeartbeatInstanceId;
         log.ComponentTypeName = _intiatingTypeName;
         log.LogText = logText;
         if (pulseEventSource != PulseEventSource.Count)
         {
             log.PulseTimerInterval = PulseTimerInterval;
             log.TimerPulseNumber = _timerPulseNumber;
             log.TimerMilliseconds = _timerMilliseconds;
         }
         if (pulseEventSource != PulseEventSource.Timer)
         {
             log.PulseCountInterval = PulseCountInterval;
             log.CountPulseNumber = _countPulseNumber;
             log.CountNumber = _count;
         }
         HeartbeatRepository.WriteHeartbeatLog(log);
     }
 }
Exemple #14
0
 private void End(HeartbeatStatus status, string logText)
 {
     StopTimings();
     WriteLog(PulseEventSource.End, status, logText);
     _loggedEnd = true;
 }
Exemple #15
0
 private void End(HeartbeatStatus status, string logText)
 {
     StopTimings();
     WriteLog(PulseEventSource.End, status, logText);
     _loggedEnd = true;
 }
 public HeartbeatResponse(MonitoredServices type, HeartbeatStatus status)
 {
     Type   = type;
     Status = status;
 }
Exemple #17
0
 public RecordedHeartbeat(HeartbeatStatus status, DateTime?timestamp)
 {
     Status    = status;
     Timestamp = timestamp;
 }
 public Heartbeat()
 {
     status       = HeartbeatStatus.Stop;
     lastSentTime = DateTime.Now;
 }