public void ThreadDieing(IThread heartbeat) { m_log.Warn("[SceneHeartbeatTracker]: " + heartbeat.type + " has been found dead for " + m_scene.RegionInfo.RegionName + "."); if(AllHeartbeats.Contains(heartbeat)) AllHeartbeats.Remove(heartbeat); }
private void CheckThread(IThread hb) { if (hb.LastUpdate == new DateTime()) return; TimeSpan ts = DateTime.UtcNow - hb.LastUpdate; if (ts.Seconds > 5) { m_log.Warn("[SceneHeartbeatTracker]: " + hb.type + " has been found dead, attempting to revive..."); //Time to start a new one AllHeartbeats.Remove(hb); hb.Restart(); } }
public void AddSceneHeartbeat(IThread heartbeat, out System.Threading.Thread thread) { //m_log.Warn("[SceneHeartbeatTracker]: " + heartbeat.type + " has been started"); thread = new System.Threading.Thread(heartbeat.Start); thread.Name = "SceneHeartbeat"; thread.Priority = System.Threading.ThreadPriority.Normal; thread.IsBackground = true; thread.Start(); heartbeat.ThreadIsClosing += ThreadDieing; AllHeartbeats.Add(heartbeat); }
public void FireThreadClosing(IThread sh) { if (ThreadIsClosing != null) ThreadIsClosing(sh); }