public void SaveSession(MonitoringSession session, LockFile lockFile = null) { if (lockFile == null) { lockFile = AcquireSessionLock(session); } string cpuMonitorCompletedPath = GetCpuMonitoringPath(MonitoringSessionDirectories.Completed); cpuMonitorCompletedPath = Path.Combine(cpuMonitorCompletedPath, session.SessionId + ".json"); session.ToJsonFile(cpuMonitorCompletedPath); if (lockFile != null) { lockFile.Release(); } }
public MonitoringSession CreateSession(MonitoringSession monitoringSession) { string cpuMonitoringActive = GetCpuMonitoringPath(MonitoringSessionDirectories.Active); var existingFiles = FileSystemHelpers.GetFilesInDirectory(cpuMonitoringActive, "*.json", false, SearchOption.TopDirectoryOnly); if (existingFiles.Count > 0) { throw new ApplicationException("Another monitoring session is already in progress"); } else { ValidateSessionParameters(monitoringSession); FileSystemHelpers.DeleteDirectoryContentsSafe(cpuMonitoringActive); monitoringSession.StartDate = DateTime.UtcNow; monitoringSession.EndDate = DateTime.MinValue.ToUniversalTime(); monitoringSession.SessionId = monitoringSession.StartDate.ToString(SessionConstants.SessionFileNameFormat); cpuMonitoringActive = Path.Combine(cpuMonitoringActive, monitoringSession.SessionId + ".json"); monitoringSession.ToJsonFile(cpuMonitoringActive); Logger.LogNewCpuMonitoringSession(monitoringSession); } return(monitoringSession); }