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); } }
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; }
public async Task UpdateStatus(HeartbeatStatus newStatus, DateTime?latestTimestamp) { if (newStatus != status) { await RaiseStateChangeEvents(newStatus, latestTimestamp) .ConfigureAwait(false); } lastSeen = latestTimestamp; status = newStatus; }
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); }
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; } }
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()); }
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; } }
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; }
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; } }
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; }
public RecordedHeartbeat(HeartbeatStatus status, DateTime?timestamp) { Status = status; Timestamp = timestamp; }
public Heartbeat() { status = HeartbeatStatus.Stop; lastSentTime = DateTime.Now; }