| CApplication | |
| CEasySave.Gui.App | Avalonia application class for the EasySave GUI. Responsible for loading XAML resources and wiring the main window |
| CEasySave.Core.Entities.BackupConfiguration | Global configuration: list of jobs and paths for log/state files |
| CEasySave.Core.Models.BackupEnumerationOptions | Options applied during backup file enumeration |
| CEasySave.Core.Entities.BackupJob | Backup job |
| CEasySave.Core.Entities.BackupProgress | Backup job progress (for the real-time status file) |
| CEasySave.Console.EasySavePaths | Paths used by EasySave for config, state and log files (for display in TUI "View paths") |
| CEasySave.Gui.EasySavePaths | Provides strongly-typed paths used by the EasySave GUI for configuration, state and log files |
| CEasySave.Gui.Services.IAudiodescription | |
| CEasySave.Gui.Services.Audiodescription | |
| CEasySave.Core.Interfaces.IBackupExecutor | Executes one or more backup jobs. When multiple job identifiers are provided, jobs run in parallel; when a single job is provided, it runs alone (same behavior as before). Depends on strategies, the FileSystem, the StateWriter, and logging (injected). Supports cooperative cancellation |
| CEasySave.Infrastructure.Backup.BackupExecutor | Executes backup jobs in parallel when multiple are selected, otherwise runs a single job. Logging, real-time state, full/differential strategy. Progress by size (bytes) with ETA and report during file copy. Blocks start and stops during backup when business software is detected. State and log writes are coordinated so that the state file and logs remain consistent when several jobs run concurrently |
| CEasySave.Gui.Services.IBackupProgressAggregator | Aggregates raw BackupProgress reports into a stable list of JobProgressViewModel for display (one entry per job). Single responsibility: progress-to-view adaptation (Adapter pattern) |
| CEasySave.Gui.Services.BackupProgressAggregator | Adapts BackupProgress reports into a list of JobProgressViewModel for the GUI. Maintains one view model per job name (by ordinal-ignore-case key) so that parallel jobs each have a stable row |
| CEasySave.Core.Interfaces.IBackupStrategy | Defines the filtering of eligible files (complete vs differential) |
| CEasySave.Infrastructure.Backup.DifferentialBackupStrategy | Differential backup strategy: only files modified since the last full backup |
| CEasySave.Infrastructure.Backup.FullBackupStrategy | Full backup strategy: all files are eligible |
| CEasySave.Core.Interfaces.IBackupStrategyFactory | Provides the appropriate backup strategy based on the specified backup type |
| CEasySave.Infrastructure.Backup.BackupStrategyFactory | Simple factory that returns the right IBackupStrategy implementation for a BackupType |
| CEasySave.Core.Interfaces.IBusinessSoftwareDetector | Detects whether a configured "business software" process is currently running. Used to block backup start and to stop after the current file during backup |
| CEasySave.Infrastructure.Backup.BusinessSoftwareDetector | Detects if a process with the given name is running (e.g. Calculator for demos). Matches by process name (case-insensitive); ".exe" suffix in config is stripped for comparison |
| CEasySave.Core.Interfaces.ICentralizedLogClient | Port for sending log entries to a centralized log server. Implementations (adapters) must not throw: network errors must be handled without failing the backup |
| CEasySave.Infrastructure.Logging.CentralizedLogClient | Adapter: sends log entries to the centralized log server via TCP (newline-delimited JSON). Does not throw: all exceptions are caught so that backup execution is never failed by log sending |
| CEasySave.Gui.Services.IConfigurationHolder | Holds the current backup configuration in memory as a single source of truth, shared across all tabs for smooth navigation without reloading from disk |
| CEasySave.Gui.Services.ConfigurationHolder | Default implementation of IConfigurationHolder, keeping the current configuration in memory and delegating persistence to IConfigurationRepository |
| CEasySave.Core.Interfaces.IConfigurationRepository | Defines methods for loading and saving the backup configuration, including the list of jobs, log/status directory, and the date of the last full backup for each job |
| CEasySave.Infrastructure.Persistence.JsonConfigurationRepository | Loads and saves the application configuration in JSON format. No hard-coded paths: the configuration directory is injected |
| CEasySave.Gui.Services.IConfirmationService | |
| CEasySave.Gui.Services.MessageBoxConfirmationService | |
| CIDisposable | |
| CEasyLog.DailyLogWriter | DailyLogWriter is responsible for writing log entries to daily log files in JSON format. Each daily file contains a single JSON array with one object per log entry |
| CEasyLog.XmlDailyLogWriter | Writes log entries to a daily XML file (yyyy-MM-dd.xml). The file contains a logEntries root element with one logEntry element per write |
| CEasySave.Core.Interfaces.IFileEncryptor | Encrypts a file using an external process (e.g. CryptoSoft). Follows Strategy pattern: the backup executor can use this instead of a plain copy for files whose extension is in the encryption list |
| CEasySave.Infrastructure.Encryption.CryptoSoftFileEncryptor | Adapter for the external CryptoSoft executable: encrypts a file by launching a process with arguments (source path, destination path, key file path). Exit code: -1 invalid args, -4 failure, otherwise milliseconds on success |
| CEasySave.Gui.Services.IFilePickerService | Service abstraction that opens a file picker dialog (MVVM-friendly and testable) |
| CEasySave.Gui.Services.FilePickerService | Default implementation of IFilePickerService using Avalonia's IStorageProvider to display a native file picker dialog. No file type filter is applied |
| CEasySave.Core.Interfaces.IFileSystemService | Defines operations for interacting with the file system. Acts as an abstraction layer to handle file enumeration, copying, and metadata retrieval |
| CEasySave.Infrastructure.FileSystem.FileSystemService | Implementation of file system operations (local, external, network) |
| CEasySave.Gui.Services.IFolderPickerService | Service abstraction that opens a folder picker dialog (MVVM-friendly and testable) |
| CEasySave.Gui.Services.FolderPickerService | Default implementation of IFolderPickerService using Avalonia's IStorageProvider to display a native folder picker dialog |
| CEasySave.Gui.Services.ILocalizationProvider | Provides localized UI strings for the GUI (inversion of control abstraction) |
| CEasySave.Gui.Services.LocalizationProvider | Default implementation of ILocalizationProvider using strongly-typed access to ResX resources embedded in the GUI assembly |
| CEasySave.LogServer.Protocol.ILogEntryHandler | Defines the contract for handling a single received log entry (validation and persistence). Allows the socket layer to remain agnostic of storage (Dependency Inversion) |
| CEasySave.LogServer.Protocol.LogEntryHandler | Handles received log DTOs: validates and forwards them to the configured ILogWriter. Converts LogEntryDto to LogEntry for storage (Adapter pattern) |
| CEasyLog.ILogWriter | Public contract for a log writer. Implementations write a log entry asynchronously |
| CEasyLog.DailyLogWriter | DailyLogWriter is responsible for writing log entries to daily log files in JSON format. Each daily file contains a single JSON array with one object per log entry |
| CEasyLog.XmlDailyLogWriter | Writes log entries to a daily XML file (yyyy-MM-dd.xml). The file contains a logEntries root element with one logEntry element per write |
| CEasySave.Infrastructure.Persistence.ConfigurableLogWriter | ILogWriter implementation that dynamically selects the log format (JSON or XML) based on the application configuration (BackupConfiguration.LogFileFormat) |
| CEasySave.Infrastructure.Persistence.DestinationLogWriter | ILogWriter that routes log entries according to BackupConfiguration.LogDestination: local only, centralized server only, or both. Local writing is delegated to the configured format writer (JSON/XML). Centralized sending never throws so that backup execution is not failed by network errors |
| CINotifyPropertyChanged | |
| CEasySave.Gui.ViewModels.ViewModelBase | Base class for all ViewModels providing property change notification (MVVM) |
| CEasySave.Gui.ViewModels.CreateEditJobViewModel | ViewModel for the create/edit tab: allows creating a new job or editing an existing one through a form |
| CEasySave.Gui.ViewModels.JobItemViewModel | Lightweight view model used to display a backup job in lists (separating presentation from domain entities) |
| CEasySave.Gui.ViewModels.JobProgressViewModel | View model for a single job's progress in the GUI (name, percent, files, size, ETA, current file). Used as the data item for each row in the multi-job progress list (Composite display) |
| CEasySave.Gui.ViewModels.JobsTabViewModel | ViewModel for the jobs tab: listing, details and execution of backup jobs |
| CEasySave.Gui.ViewModels.MainWindowViewModel | ViewModel for the main window: header texts and tab view models. Contains orchestration logic only, no business rules |
| CEasySave.Gui.ViewModels.SettingsViewModel | ViewModel for the settings tab: shows the important paths and allows changing the log format |
| CInvalidOperationException | |
| CEasySave.Core.Exceptions.BusinessSoftwareDetectedException | Thrown when backup cannot start because the configured business software process is detected as running |
| CEasySave.Core.Interfaces.IPriorityTransferGate | Coordinates transfer order across multiple backup jobs so that the global priority rule is respected: as long as any job has a priority file pending, no job may transfer a non-priority file. Used only when several jobs run in parallel. Single-job execution does not require a gate |
| CEasySave.Infrastructure.Backup.PriorityTransferGate | Thread-safe implementation of IPriorityTransferGate. Tracks per-job priority file counts and signals waiters when the total pending priority count reaches zero |
| CEasySave.Core.Interfaces.IStateWriter | Defines the contract for writing the real-time state of backup jobs to a persistence medium (e.g., a single JSON file) |
| CEasySave.Infrastructure.Persistence.JsonStateWriter | Implementation of IStateWriter that writes backup jobs state to a JSON file |
| CEasySave.Console.Resources.LangHelper | This class handles language management |
| CEasySave.Core.Models.LogEntry | Represents a single backup log entry for EasySave |
| CEasySave.LogServer.Protocol.LogEntryDto | Data transfer object for a log entry received over the wire. Mirrors EasySave.Core.Models.LogEntry with settable properties for JSON deserialization. TimeSpan is sent as total milliseconds (long) |
| CEasySave.LogServer.Sockets.LogSocketListener | Listens for incoming TCP connections and processes newline-delimited JSON log entries per line. One connection can send multiple lines; each line is one JSON LogEntryDto. Sends "OK" or "ERR" per line (synchronous response per log entry) |
| CEasySave.Gui.MutableEasySavePaths | Mutable version of EasySavePaths allowing to change the base directory at runtime. When changing the path, existing configuration, state and log files are copied to the new location so that no data is lost |
| CProgram | |
| CWindow | |
| CEasySave.Gui.MainWindow | Main window view: contains only generated XAML content, the DataContext is provided by App (pure MVVM) |