Example #1
0
        /// <summary>
        ///     Marks the file in the index as deleted.
        ///     Note only the pointer to the file is removed, the data itself remains stored in the data file (data is not purged).
        /// </summary>
        public void DeleteDataIdentifier(Guid dataIdentifier, DeleteFileBehaviour deleteFileBehaviour, StreamStateBehaviour indexStreamStateBehaviour)
        {
            switch (indexStreamStateBehaviour)
            {
                case StreamStateBehaviour.OpenNewStreamForReadingAndWriting:
                    //
                    // open the stream and make a recursive call
                    //
                    using (IndexStream = FileStreamFactory.CreateFileStream(IndexFilename, indexStreamStateBehaviour))
                    {
                        DeleteDataIdentifier(dataIdentifier, deleteFileBehaviour, StreamStateBehaviour.UseExistingStream);
                    }
                    break;
                case StreamStateBehaviour.UseExistingStream:
                    switch (deleteFileBehaviour)
                    {
                        case DeleteFileBehaviour.IgnoreWhenNotExists:
                            break;
                        case DeleteFileBehaviour.ThrowExceptionWhenNotExists:
                            if (!Exists(dataIdentifier, StreamStateBehaviour.UseExistingStream))
                            {
                                throw new FileNotFoundException(string.Format("File does not exist ({0})", dataIdentifier));
                            }
                            break;
                        default:
                            throw new NotSupportedException(string.Format("Unsupported delete file behaviour ({0})", deleteFileBehaviour));
                    }

                    DeleteDataIdentifierInExistingStream(dataIdentifier, 0, OffsetFirstIndexBlock, indexStreamStateBehaviour);
                    break;
                default:
                    throw new NotSupportedException(string.Format("Unexpected indexStreamStateBehaviour {0}", indexStreamStateBehaviour));
            }
        }
Example #2
0
        public static void DeleteDataIdentifier(string fileStorageName, Guid dataIdentifier, DeleteFileBehaviour deleteFileBehaviour)
        {
            var fileStorageHandler = FileStorageHandler.Open(fileStorageName);

            fileStorageHandler.DeleteDataIdentifier(dataIdentifier, deleteFileBehaviour, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
        }
Example #3
0
 public static void DeleteDataIdentifier(string fileStorageName, Guid dataIdentifier, DeleteFileBehaviour deleteFileBehaviour)
 {
     FileStorageHandler fileStorageHandler = FileStorageHandler.Open(fileStorageName);
     fileStorageHandler.DeleteDataIdentifier(dataIdentifier, deleteFileBehaviour, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
 }