Namespace FulcrumFS
Classes
DanglingAliasException
The exception that is thrown when a variant alias is encountered whose source data file is missing from the repository. This always indicates repository corruption: in normal operation every code path that could remove the source (deletion, retirement, rollback) is coordinated against the aliases pointing at it so this state is unreachable. See the CorruptionDetected event for programmatic discovery of these (and other) corruption conditions across all fetch and add operations.
DanglingAliasInfo
Describes a variant alias in a file group whose source data file is missing. Returned by GetGroupAsync(FileId) via DanglingAliases to surface alias corruption without polluting VariantFiles. Per-ID fetches of a dangling alias throw DanglingAliasException.
FileFormat
Represents a file format that can be used to validate that a file's content matches its declared extension.
FileFormatValidationOptions
Represents configuration options for a FileFormatValidationProcessor.
FileFormatValidationProcessor
A FileProcessor that validates a file's content against its declared extension using a configured set of FileFormat instances. The file content is not modified; the processor either passes the file through unchanged or throws a FileProcessingException if the content does not match the expected file format.
FileId
Represents a validated file identifier.
FileIdGenerator
Generates sequential file IDs backed by version 7 GUIDs, each greater than every ID the same generator created before it.
FileProcessingContext
Represents the context for processing a file, providing access to the source file or stream and methods to create new work files or directories.
FileProcessingException
The exception that is thrown when an error occurs during file processing.
FileProcessingPipeline
Represents a pipeline for processing files using a series of FileProcessor instances.
FileProcessingPipelineSelector
Selects the appropriate FileProcessingPipeline based on the source file extension by routing across a set of registered pipelines.
FileProcessingResult
Represents the result of processing a file in a FileProcessingPipeline.
FileProcessingVariant
Represents an auto-variant that is produced from the output of a FileProcessingPipeline.
FileProcessor
Represents a base class for processing files in a file repository.
FileRepo
Represents a transactional file repository stored in a local directory.
FileRepoCleaner
Cleans up a file repository: enumerates marker files and delete journals in the repository's cleanup directory, removes files whose delete markers or committed delete journals have aged past the supplied delete delay, and resolves indeterminate files (including the files listed in staged delete journals that no transaction holds) via an optional caller-supplied callback.
FileRepoCleaningOptions
Represents configuration options for a FileRepoCleaner.
FileRepoOptions
Represents configuration options for a file repository.
FileRepoPaths
Contains path constants used by file repositories.
FileRepoStage
Represents a staged FileRepoStagedTransaction, returned by StageAsync(CancellationToken). Committing the stage commits the transaction.
FileRepoStagedTransaction
Represents a staged transaction for a file repository: a transaction that records all of its deletions in a single journal file and is committed in two calls, StageAsync(CancellationToken) before the application commits its database and CommitAsync(CancellationToken) after.
FileRepoTransaction
Represents a transaction for a file repository, allowing changes to be committed or rolled back.
FileSourceUnchangedException
Represents an exception that can be thrown when file processing does not result in any changes to the source file.
RepoCorruptedException
The exception that is thrown when an operation cannot proceed because the repository is in a corrupted state that requires external intervention. Examples include multiple data files mapping to the same variant slot, or a rebase that cannot be resumed because required files are missing. See the CorruptionDetected event for programmatic discovery of these (and other) corruption conditions; the Kind on the event carries the specific kind that triggered this throw.
RepoCorruptionInfo
Describes a repository corruption condition surfaced via the CorruptionDetected event.
RepoFileBusyException
The exception that is thrown when the deletion of a file in a repository cannot be recorded because the file is in use by something else in the repository, which normally means that the transaction that added the file has not committed or rolled back yet.
RepoFileEntry
Describes a file group found by EnumerateFilesAsync(CancellationToken).
RepoFileGroupInfo
Represents information about a file in a FileRepo together with all of its variants.
RepoFileInfo
Represents information about a file stored in a FileRepo, including its identity and a recommended way to open it.
RepoFileNotFoundException
The exception that is thrown when a file in a repository is not found.
RepoTransactionCompletionFailureInfo
Describes a transaction-completion failure surfaced via the TransactionCompletionFailed event. The failure occurred during the final commit or rollback step (not during the in-flight transaction body) and does not affect the integrity of the underlying data; affected files remain accessible in an indeterminate state pending repair by the next cleaner pass.
RepoVariantPendingCleanupException
The exception that is thrown when an add operation targets a variant ID that still has pending retirement state on disk from a prior DeleteVariantsAsync(FileId, params ReadOnlySpan<string>) call that has not yet completed physical cleanup.
TaskWithProgress<T>
Represents a task with progress reporting capabilities.
Structs
FileFormatValidationResult
Represents the result of validating a file's content against a FileFormat.
ProgressValue
Represents a progress value for a file processing operation, including the variant ID, stage, progress fraction, and optional stage display message.
TaskWithProgress<T>.Awaiter
Provides an awaiter for awaiting a TaskWithProgress<T>.
TaskWithProgress<T>.ConfiguredAwaitable
Provides an awaitable type that enables configured awaits on a TaskWithProgress<T> instance.
TaskWithProgress<T>.ConfiguredAwaiter
Provides an awaiter for awaiting a TaskWithProgress<T>.
Interfaces
IFileProcessingPipelineProvider
Provides a statically-shaped FileProcessingPipeline whose variant tree can be enumerated ahead of execution. Both FileProcessor and FileProcessingPipeline implement this interface.
IFileProcessingPipelineSelector
Selects a FileProcessingPipeline to use for processing a file based on its source extension. This is the interface accepted by every public add API on IFileRepoTransaction, IFileRepoStagedTransaction and IFileRepo.
IFileRepo
Represents a transactional file repository. Code written against this interface rather than the local FileRepo keeps working when another
implementation, such as a repository served remotely, replaces the local directory one.
IFileRepoCleaner
Provides cleanup operations for a file repository: removing expired delete markers, resolving indeterminate files, and physically deleting files whose delete markers have aged past the supplied delete delay.
IFileRepoStage
Represents a staged IFileRepoStagedTransaction, returned by StageAsync(CancellationToken). Committing the stage commits the transaction.
IFileRepoStagedTransaction
Represents a staged transaction for an IFileRepo: a transaction for application transactions that delete many files, committed in two calls, StageAsync(CancellationToken) before the application commits its database and CommitAsync(CancellationToken) after.
IFileRepoTransaction
Represents a transaction for an IFileRepo, which adds and deletes main files and is committed or rolled back as a whole.
IRepoFile
Represents a file stored in an IFileRepo: a main file or one of its variants.
IRepoFileGroup
Represents a file stored in an IFileRepo together with all of its variants.
Enums
DeleteMode
Specifies when file deletions issued through the repository take physical effect.
FileAccessPattern
Specifies how a caller is going to read the content of a repository file, as a hint to the implementation that opens it.
FileIdMode
Specifies the algorithm used to generate file IDs in a file repository.
IndeterminateResolution
Specifies the resolution action to take for files with indeterminate status in a repository.
RepoCorruptionKind
Identifies the kind of repository corruption surfaced via the CorruptionDetected event.
RepoFormatVersion
Specifies a version of the on-disk format of a FulcrumFS repository.
RepoLoggingMode
Represents the logging mode used to write information and errors.
RepoTransactionCompletionOperation
Identifies which transaction-completion step (commit or rollback) was in progress when the failure surfaced via the TransactionCompletionFailed event occurred.
SourceBufferingMode
Specifies the mode for buffering source streams to temporary repository work files. This setting controls the trade-off between throughput, memory usage, and security resilience against slow sources.
UnicodeEncodings
Specifies the Unicode encodings accepted by TextUnicode(UnicodeEncodings, params ReadOnlySpan<string>).
Delegates
RepoCorruptionHandler
Represents a handler invoked when repository corruption is detected. Handlers receive a RepoCorruptionInfo describing the condition and may perform logging, alerting, or automated repair. The handler fires every time corruption is encountered (no per-process debouncing); handlers can debounce or log as appropriate. Handler exceptions are not caught and will propagate out of the operation that detected the corruption.
RepoTransactionCompletionFailedHandler
Represents a handler invoked when a transaction-completion step (commit or rollback) fails. Handlers receive a RepoTransactionCompletionFailureInfo describing the failed operation and the underlying exception, and may perform logging or alerting. The event fires every time a completion failure occurs; the failure does not affect the integrity of the underlying data and can typically be ignored outside of diagnostics. Handler exceptions are not caught and will propagate out of the operation that detected the failure.