示例#1
0
        public void StoreBytesForExistingStreams(Guid dataIdentifier, byte[] fileData, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour)
        {
            #region Preconditions and initialization ...

            if (fileData.LongLength > fileData.Length)
            {
                throw new Exception("NFileStorage is (currently) limited to a max length of 32bit (about 4.294.967.296 bytes)");
            }

            //
            // first check the behaviour conditions
            //
            switch (addFileBehaviour)
            {
                case AddFileBehaviour.SkipWhenAlreadyExists:
                    if (Exists(dataIdentifier, StreamStateBehaviour.UseExistingStream))
                    {
                        return;
                    }
                    break;
                case AddFileBehaviour.ThrowExceptionWhenAlreadyExists:
                    if (Exists(dataIdentifier, StreamStateBehaviour.UseExistingStream))
                    {
                        throw new Exception(string.Format("File {0} already exists", dataIdentifier));
                    }
                    break;
                case AddFileBehaviour.OverrideWhenAlreadyExists:
                    if (Exists(dataIdentifier, StreamStateBehaviour.UseExistingStream))
                    {
                        DeleteDataIdentifier(dataIdentifier, DeleteFileBehaviour.ThrowExceptionWhenNotExists,
                                             StreamStateBehaviour.UseExistingStream);
                    }
                    break;
                default:
                    throw new NotSupportedException(string.Format("Unsupported behaviour; {0}", addFileBehaviour));
            }

            #endregion

            bool supportsMetaData = SupportsFeature(FileStorageFeatureEnum.StoreMetaData);

            long dataOffset = DataStream.Length;
            int dataLength = fileData.Length;
            Int64 metaDataOffsetInFileFromBegin;
            if (supportsMetaData)
            {
                if (customMetaData == null)
                {
                    customMetaData = new EmptyCustomMetaData();
                }
                metaDataOffsetInFileFromBegin = dataOffset + DataFileDataStructSize + dataLength;
            }
            else
            {
                metaDataOffsetInFileFromBegin = 0;
            }

            // create a new struct with offsets 0 for each index in guid
            var newFileStruct = new DataFileDataStruct
                {
                    DataIdentification = dataIdentifier,
                    BinaryDataSizeInBytes = dataLength,
                    DataStateEnumID = 0,
                    MetaDataOffsetInFileFromBegin = metaDataOffsetInFileFromBegin,
                    ReservedB = 0
                };

            #region Store the information in the data file

            #region Store struct in data file

            StoreStruct(dataOffset, newFileStruct);

            #endregion

            #region Store actual data in data file

            //
            // the stream is intentionally left open
            //
            var bufferedDataFileStream = new BufferedStream(DataStream);
            // write the actual data
            bufferedDataFileStream.Write(fileData, 0, dataLength);
            // flush, to ensure we don't have bytes in the queue when we close the file
            bufferedDataFileStream.Flush();

            #endregion

            #region Store meta data in data file

            if (supportsMetaData)
            {
                //
                // use the DynamiteXML feature to store metadata
                //
                var metaDataContainer = new MetaDataContainer(customMetaData, DateTime.UtcNow, dataLength);
                string metaDataString = DynamiteXmlLogic.Serialize(metaDataContainer);
                byte[] metaDataBytes = Encoding.UTF8.GetBytes(metaDataString);

                //
                // write the length of the bytes of the metadata
                //
                var binaryWriter = new BinaryWriter(DataStream);
                binaryWriter.Write(metaDataBytes.Length);

                bufferedDataFileStream.Write(metaDataBytes, 0, metaDataBytes.Length);
                // flush, to ensure we don't have bytes in the queue when we close the file
                bufferedDataFileStream.Flush();
            }

            #endregion

            #endregion

            #region Store the information in the index file

            //
            // derive the build index behaviour from the add file behaviour
            //
            BuildIndexBehaviour buildIndexBehaviour;
            switch (addFileBehaviour)
            {
                case AddFileBehaviour.ThrowExceptionWhenAlreadyExists:
                    buildIndexBehaviour = BuildIndexBehaviour.ThrowExceptionWhenIndexAlreadyExists;
                    break;
                case AddFileBehaviour.SkipWhenAlreadyExists:
                    //
                    // this should have been intercepted before, should be impossible
                    //
                    buildIndexBehaviour = BuildIndexBehaviour.ThrowExceptionWhenIndexAlreadyExists;
                    break;
                case AddFileBehaviour.OverrideWhenAlreadyExists:
                    buildIndexBehaviour = BuildIndexBehaviour.OverrideWhenAlreadyExists;
                    break;
                default:
                    throw new NotSupportedException(string.Format("Unexpected addFileBehaviour {0}", addFileBehaviour));
            }

            // we update the index file
            BuildIndex(dataIdentifier, dataOffset, buildIndexBehaviour, StreamStateBehaviour.UseExistingStream);

            #endregion
        }
示例#2
0
 public static void RestoreIndexFile(string fileStorageName, AddFileBehaviour addFileBehaviour, FileStorageHandler.ExposeProgressDelegate exposeProgressDelegate)
 {
     FileStorageHandler.RestoreIndexFile(fileStorageName, addFileBehaviour, exposeProgressDelegate);
 }
示例#3
0
 public void StoreBytes(Guid dataIdentifier, byte[] fileData, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour, StreamStateBehaviour indexStreamStateBehaviour, StreamStateBehaviour dataStreamStateBehaviour)
 {
     switch (indexStreamStateBehaviour)
     {
         case StreamStateBehaviour.OpenNewStreamForReadingAndWriting:
             //
             // open the stream and make a recursive call
             //
             using (IndexStream = FileStreamFactory.CreateFileStream(IndexFilename, indexStreamStateBehaviour))
             {
                 StoreBytes(dataIdentifier, fileData, customMetaData, addFileBehaviour, StreamStateBehaviour.UseExistingStream, dataStreamStateBehaviour);
             }
             break;
         case StreamStateBehaviour.UseExistingStream:
             // 
             // check state of data file stream
             //
             switch (dataStreamStateBehaviour)
             {
                 case StreamStateBehaviour.OpenNewStreamForReadingAndWriting:
                     //
                     // open the stream and make a recursive call
                     //
                     using (DataStream = FileStreamFactory.CreateFileStream(DataFilename, dataStreamStateBehaviour))
                     {
                         StoreBytes(dataIdentifier, fileData, customMetaData, addFileBehaviour, indexStreamStateBehaviour, StreamStateBehaviour.UseExistingStream);
                     }
                     break;
                 case StreamStateBehaviour.UseExistingStream:
                     //
                     //
                     //
                     StoreBytesForExistingStreams(dataIdentifier, fileData, customMetaData, addFileBehaviour);
                     //
                     break;
                 default:
                     throw new NotSupportedException(string.Format("Unexpected dataStreamStateBehaviour {0}", dataStreamStateBehaviour));
             }
             //
             break;
         default:
             throw new NotSupportedException(string.Format("Unexpected indexStreamStateBehaviour {0}", indexStreamStateBehaviour));
     }
 }
示例#4
0
        public static void StoreStream(string fileStorageName, Guid dataIdentifier, Stream streamToStore, int numberOfBytes, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour)
        {
            var fileStorageHandler = FileStorageHandler.Open(fileStorageName);

            fileStorageHandler.StoreStream(dataIdentifier, streamToStore, numberOfBytes, customMetaData, addFileBehaviour, StreamStateBehaviour.OpenNewStreamForReadingAndWriting, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
        }
示例#5
0
        public static void StoreHttpRequest(string fileStorageName, Guid dataIdentifier, string url, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour, string userAgent)
        {
            var fileStorageHandler = FileStorageHandler.Open(fileStorageName);

            fileStorageHandler.StoreHttpRequest(dataIdentifier, url, customMetaData, addFileBehaviour, userAgent, StreamStateBehaviour.OpenNewStreamForReadingAndWriting, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
        }
示例#6
0
 public static void RestoreIndexFile(string fileStorageName, AddFileBehaviour addFileBehaviour, FileStorageHandler.ExposeProgressDelegate exposeProgressDelegate)
 {
     FileStorageHandler.RestoreIndexFile(fileStorageName, addFileBehaviour, exposeProgressDelegate);
 }
示例#7
0
        public static void Replicate(string sourcefileStorageName, string targetfileStorageName, ReplicateBehaviour replicateBehaviour, AddFileBehaviour addFileBehaviour, FileStorageHandler.ExposeProgressDelegate exposeProgressDelegatePhase1, FileStorageHandler.ExposeProgressDelegate exposeProgressDelegatePhase2)
        {
            var sourceFileStorageHandler = FileStorageHandler.Open(sourcefileStorageName);

            switch (replicateBehaviour)
            {
            case ReplicateBehaviour.AddToExistingStorage:
                //
                // nothing to check here
                //

                break;

            case ReplicateBehaviour.ReplicateToNewStorage:

                //
                // ensure target does not yet exist
                //
                Create(targetfileStorageName, CreateFileStorageBehaviour.ThrowExceptionWhenExists);

                break;

            default:
                throw new NotSupportedException(string.Format("Unsupported replicate behaviour {0}", replicateBehaviour));
            }

            var targetFileStorageHandler = FileStorageHandler.Open(targetfileStorageName);

            //
            // open source streams
            //
            using (sourceFileStorageHandler.indexStream = FileStreamFactory.CreateFileStream(sourceFileStorageHandler.indexFilename, StreamStateBehaviour.OpenNewStreamForReading))
            {
                using (sourceFileStorageHandler.dataStream = FileStreamFactory.CreateFileStream(sourceFileStorageHandler.dataFilename, StreamStateBehaviour.OpenNewStreamForReading))
                {
                    //
                    // open target streams
                    //
                    using (targetFileStorageHandler.indexStream = FileStreamFactory.CreateFileStream(targetFileStorageHandler.indexFilename, StreamStateBehaviour.OpenNewStreamForReadingAndWriting))
                    {
                        using (targetFileStorageHandler.dataStream = FileStreamFactory.CreateFileStream(targetFileStorageHandler.dataFilename, StreamStateBehaviour.OpenNewStreamForReadingAndWriting))
                        {
                            var allIdentifiers = sourceFileStorageHandler.GetAllDataIdentifiersBasedUponFileStorageIndexFile(StreamStateBehaviour.UseExistingStream, exposeProgressDelegatePhase1);

                            //
                            // start replicate process
                            //
                            foreach (var dataIdentifier in allIdentifiers)
                            {
                                sourceFileStorageHandler.ExportToOtherFileStorage(dataIdentifier, targetFileStorageHandler, addFileBehaviour, StreamStateBehaviour.UseExistingStream, StreamStateBehaviour.UseExistingStream, StreamStateBehaviour.UseExistingStream, StreamStateBehaviour.UseExistingStream);
                                if (exposeProgressDelegatePhase2 != null)
                                {
                                    exposeProgressDelegatePhase2.Invoke(dataIdentifier);
                                }
                            }
                            if (exposeProgressDelegatePhase2 != null)
                            {
                                exposeProgressDelegatePhase2.Invoke(true);
                            }
                        }
                    }
                }
            }
        }
示例#8
0
 public static void StoreObject(string fileStorageName, Guid dataIdentifier, IDynamiteXml objectToStore, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour)
 {
     FileStorageHandler fileStorageHandler = FileStorageHandler.Open(fileStorageName);
     fileStorageHandler.StoreObject(dataIdentifier, objectToStore, customMetaData, addFileBehaviour, StreamStateBehaviour.OpenNewStreamForReadingAndWriting, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
 }
示例#9
0
        public static void RestoreIndexFile(string fileStorageName, AddFileBehaviour addFileBehaviour, ExposeProgressDelegate exposeProgressDelegate)
        {
            //
            // the following method also checks whether the index file exists or not,
            // if exists, it throws an exception
            //
            CreateNewFileStorage_IndexFile(FilenameFactory.GetFileStorageIndexFilename(fileStorageName));

            var fileStorageHandler = new FileStorageHandler(fileStorageName, VersionBehaviour.ValidateVersion);
            fileStorageHandler.RestoreIndexFile(addFileBehaviour, StreamStateBehaviour.OpenNewStreamForReadingAndWriting, StreamStateBehaviour.OpenNewStreamForReading, exposeProgressDelegate);
        }
示例#10
0
        public static void Replicate(string sourcefileStorageName, string targetfileStorageName, ReplicateBehaviour replicateBehaviour, AddFileBehaviour addFileBehaviour, FileStorageHandler.ExposeProgressDelegate exposeProgressDelegatePhase1, FileStorageHandler.ExposeProgressDelegate exposeProgressDelegatePhase2)
        {
            FileStorageHandler sourceFileStorageHandler = FileStorageHandler.Open(sourcefileStorageName);

            switch (replicateBehaviour)
            {
                case ReplicateBehaviour.AddToExistingStorage:
                    //
                    // nothing to check here
                    //

                    break;
                case ReplicateBehaviour.ReplicateToNewStorage:

                    //
                    // ensure target does not yet exist
                    //
                    Create(targetfileStorageName, CreateFileStorageBehaviour.ThrowExceptionWhenExists);

                    break;
                default:
                    throw new NotSupportedException(string.Format("Unsupported replicate behaviour {0}", replicateBehaviour));
            }

            FileStorageHandler targetFileStorageHandler = FileStorageHandler.Open(targetfileStorageName);

            //
            // open source streams
            //
            using (sourceFileStorageHandler.IndexStream = FileStreamFactory.CreateFileStream(sourceFileStorageHandler.IndexFilename, StreamStateBehaviour.OpenNewStreamForReading))
            {
                using (sourceFileStorageHandler.DataStream = FileStreamFactory.CreateFileStream(sourceFileStorageHandler.DataFilename, StreamStateBehaviour.OpenNewStreamForReading))
                {
                    //
                    // open target streams
                    //
                    using (targetFileStorageHandler.IndexStream = FileStreamFactory.CreateFileStream(targetFileStorageHandler.IndexFilename, StreamStateBehaviour.OpenNewStreamForReadingAndWriting))
                    {
                        using (targetFileStorageHandler.DataStream = FileStreamFactory.CreateFileStream(targetFileStorageHandler.DataFilename, StreamStateBehaviour.OpenNewStreamForReadingAndWriting))
                        {
                            List<Guid> allIdentifiers = sourceFileStorageHandler.GetAllDataIdentifiersBasedUponFileStorageIndexFile(StreamStateBehaviour.UseExistingStream, exposeProgressDelegatePhase1);

                            //
                            // start replicate process
                            //
                            foreach (Guid dataIdentifier in allIdentifiers)
                            {
                                sourceFileStorageHandler.ExportToOtherFileStorage(dataIdentifier, targetFileStorageHandler, addFileBehaviour, StreamStateBehaviour.UseExistingStream, StreamStateBehaviour.UseExistingStream, StreamStateBehaviour.UseExistingStream, StreamStateBehaviour.UseExistingStream);
                                if (exposeProgressDelegatePhase2 != null)
                                {
                                    exposeProgressDelegatePhase2.Invoke(dataIdentifier);
                                }
                            }
                            if (exposeProgressDelegatePhase2 != null)
                            {
                                exposeProgressDelegatePhase2.Invoke(true);
                            }
                        }
                    }
                }
            }
        }
示例#11
0
 public static void StoreHttpRequest(string fileStorageName, Guid dataIdentifier, string url, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour, string userAgent)
 {
     FileStorageHandler fileStorageHandler = FileStorageHandler.Open(fileStorageName);
     fileStorageHandler.StoreHttpRequest(dataIdentifier, url, customMetaData, addFileBehaviour, userAgent, StreamStateBehaviour.OpenNewStreamForReadingAndWriting, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
 }
示例#12
0
 public static void StoreString(string fileStorageName, Guid dataIdentifier, Encoding encoding, string stringToStore, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour)
 {
     FileStorageHandler fileStorageHandler = FileStorageHandler.Open(fileStorageName);
     fileStorageHandler.StoreString(dataIdentifier, encoding, stringToStore, customMetaData, addFileBehaviour, StreamStateBehaviour.OpenNewStreamForReadingAndWriting, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
 }
示例#13
0
 public static void StoreStream(string fileStorageName, Guid dataIdentifier, Stream streamToStore, int numberOfBytes, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour)
 {
     FileStorageHandler fileStorageHandler = FileStorageHandler.Open(fileStorageName);
     fileStorageHandler.StoreStream(dataIdentifier, streamToStore, numberOfBytes, customMetaData, addFileBehaviour, StreamStateBehaviour.OpenNewStreamForReadingAndWriting, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
 }
示例#14
0
 public static void StoreBytes(string fileStorageName, Guid dataIdentifier, byte[] fileData, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour)
 {
     FileStorageHandler fileStorageHandler = FileStorageHandler.Open(fileStorageName);
     fileStorageHandler.StoreBytes(dataIdentifier, fileData, customMetaData, addFileBehaviour, StreamStateBehaviour.OpenNewStreamForReadingAndWriting, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
 }
示例#15
0
        public void StoreString(Guid dataIdentifier, Encoding encoding, string stringToStore, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour, StreamStateBehaviour indexStreamStateBehaviour, StreamStateBehaviour dataStreamStateBehaviour)
        {
            Byte[] bytes = encoding.GetBytes(stringToStore);

            StoreBytes(dataIdentifier, bytes, customMetaData, addFileBehaviour, indexStreamStateBehaviour, dataStreamStateBehaviour);
        }
示例#16
0
        public void RestoreIndexFile(AddFileBehaviour addFileBehaviour, StreamStateBehaviour indexStreamStateBehaviour, StreamStateBehaviour dataStreamStateBehaviour, ExposeProgressDelegate exposeProgressDelegate)
        {
            //
            // the following method also checks whether the index file exists or not,
            // if exists, it throws an exception
            //
            CreateNewFileStorage_IndexFile(IndexFilename);

            switch (indexStreamStateBehaviour)
            {
                case StreamStateBehaviour.OpenNewStreamForReadingAndWriting:
                    // ok
                    break;
                default:
                    throw new NotSupportedException(string.Format("Unexpected indexStreamStateBehaviour {0}", indexStreamStateBehaviour));
            }

            switch (dataStreamStateBehaviour)
            {
                case StreamStateBehaviour.OpenNewStreamForReading:
                    // ok
                    break;
                default:
                    throw new NotSupportedException(string.Format("Unexpected dataStreamStateBehaviour {0}", dataStreamStateBehaviour));
            }

            using (IndexStream = FileStreamFactory.CreateFileStream(IndexFilename, StreamStateBehaviour.OpenNewStreamForReadingAndWriting))
            {
                using (DataStream = FileStreamFactory.CreateFileStream(DataFilename, StreamStateBehaviour.OpenNewStreamForReading))
                {
                    long dataSize = DataStream.Length;
                    long offset = OffsetFirstDataBlock;

                    while (true)
                    {
                        InterpretedDataFileDataStruct retrieveFileStruct = GetInterpretedDataStructUsingExistingStream(offset);

                        //
                        // the offset in the index file should point to the starting location 
                        // of the data struct, this is not the offset where the actual data of
                        // the file is stored, but the start of the struct before the actual data.
                        //

                        Guid dataIdentifier = retrieveFileStruct.DataIdentification;

                        //
                        // if the data file contains duplicate dataIdentifiers, we will override previous ones (which
                        // is acceptable, as new files are appeneded to the data file, so more up to date files are stored
                        // after older ones).
                        //
                        BuildIndex(dataIdentifier, offset, BuildIndexBehaviour.OverrideWhenAlreadyExists, StreamStateBehaviour.UseExistingStream);

                        //
                        // jump to the next data block
                        //
                        offset = retrieveFileStruct.BinaryDataOffset + retrieveFileStruct.BinaryDataSizeInBytes;

                        //
                        // inform the outside world about the progress we've made,
                        // in case the outside world is interested
                        //
                        if (exposeProgressDelegate != null)
                        {
                            exposeProgressDelegate.Invoke(dataIdentifier);
                        }

                        if (offset >= dataSize)
                        {
                            //
                            // reach the end of the file
                            //
                            break;
                        }
                    }
                }
            }

            if (exposeProgressDelegate != null)
            {
                exposeProgressDelegate.Invoke(true);
            }
        }
示例#17
0
 public void ExportToOtherFileStorage(Guid dataIdentifier, FileStorageHandler targetFileStorageHandler, AddFileBehaviour addFileBehaviour, StreamStateBehaviour sourceIndexStreamStateBehaviour, StreamStateBehaviour sourceDataStreamStateBehaviour, StreamStateBehaviour targetIndexStreamStateBehaviour, StreamStateBehaviour targetDataStreamStateBehaviour)
 {
     if (targetFileStorageHandler.FileStorageName.Equals(FileStorageName))
     {
         throw new NotSupportedException(string.Format("Cannot export file from a filestorage to another filestorage with the same name ({0})", FileStorageName));
     }
     byte[] fileData = GetFileByteData(dataIdentifier, sourceIndexStreamStateBehaviour, sourceDataStreamStateBehaviour);
     MetaDataContainer metaDataContainer = GetMetaDataContainer(dataIdentifier, sourceIndexStreamStateBehaviour, sourceDataStreamStateBehaviour);
     targetFileStorageHandler.StoreBytes(dataIdentifier, fileData, metaDataContainer.CustomMetaData, addFileBehaviour, targetIndexStreamStateBehaviour, targetDataStreamStateBehaviour);
 }
示例#18
0
        public void StoreHttpRequest(Guid dataIdentifier, string url, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour, string userAgent, StreamStateBehaviour indexStreamStateBehaviour, StreamStateBehaviour dataStreamStateBehaviour)
        {
            var request = (HttpWebRequest) WebRequest.Create(url);
            request.UserAgent = userAgent;

            // execute the web request
            var response = (HttpWebResponse) request.GetResponse();

            using (Stream webStream = response.GetResponseStream())
            {
                StoreBytes(dataIdentifier, webStream.ReadAllBytes(), customMetaData, addFileBehaviour, indexStreamStateBehaviour, dataStreamStateBehaviour);
            }
        }
示例#19
0
        public static void ExportToOtherFileStorage(string sourcefileStorageName, Guid dataIdentifier, AddFileBehaviour addFileBehaviour, string targetfileStorageName)
        {
            var sourceFileStorageHandler = FileStorageHandler.Open(sourcefileStorageName);
            var targetFileStorageHandler = FileStorageHandler.Open(targetfileStorageName);

            sourceFileStorageHandler.ExportToOtherFileStorage(dataIdentifier, targetFileStorageHandler, addFileBehaviour, StreamStateBehaviour.OpenNewStreamForReading, StreamStateBehaviour.OpenNewStreamForReading, StreamStateBehaviour.OpenNewStreamForReadingAndWriting, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
        }
示例#20
0
 public void StoreFile(Guid dataIdentifier, string filename, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour, StreamStateBehaviour indexStreamStateBehaviour, StreamStateBehaviour dataStreamStateBehaviour)
 {
     StoreBytes(dataIdentifier, File.ReadAllBytes(filename), customMetaData, addFileBehaviour, indexStreamStateBehaviour, dataStreamStateBehaviour);
 }
示例#21
0
        public static void StoreBytes(string fileStorageName, Guid dataIdentifier, byte[] fileData, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour)
        {
            var fileStorageHandler = FileStorageHandler.Open(fileStorageName);

            fileStorageHandler.StoreBytes(dataIdentifier, fileData, customMetaData, addFileBehaviour, StreamStateBehaviour.OpenNewStreamForReadingAndWriting, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
        }
示例#22
0
 public void StoreStream(Guid dataIdentifier, Stream streamToStore, int numberOfBytes, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour, StreamStateBehaviour indexStreamStateBehaviour, StreamStateBehaviour dataStreamStateBehaviour)
 {
     using (var binaryReader = new BinaryReader(streamToStore))
     {
         byte[] fileData = binaryReader.ReadBytes(numberOfBytes);
         StoreBytes(dataIdentifier, fileData, customMetaData, addFileBehaviour, indexStreamStateBehaviour, dataStreamStateBehaviour);
     }
 }
示例#23
0
        public static void StoreString(string fileStorageName, Guid dataIdentifier, Encoding encoding, string stringToStore, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour)
        {
            var fileStorageHandler = FileStorageHandler.Open(fileStorageName);

            fileStorageHandler.StoreString(dataIdentifier, encoding, stringToStore, customMetaData, addFileBehaviour, StreamStateBehaviour.OpenNewStreamForReadingAndWriting, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
        }
示例#24
0
 public void StoreObject(Guid dataIdentifier, IDynamiteXml objectToStore, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour, StreamStateBehaviour indexStreamStateBehaviour, StreamStateBehaviour dataStreamStateBehaviour)
 {
     string serializedObject = DynamiteXmlLogic.Serialize(objectToStore);
     StoreString(dataIdentifier, serializedObject, customMetaData, addFileBehaviour, indexStreamStateBehaviour, dataStreamStateBehaviour);
 }
示例#25
0
        public static void StoreObject(string fileStorageName, Guid dataIdentifier, IDynamiteXml objectToStore, ICustomMetaData customMetaData, AddFileBehaviour addFileBehaviour)
        {
            var fileStorageHandler = FileStorageHandler.Open(fileStorageName);

            fileStorageHandler.StoreObject(dataIdentifier, objectToStore, customMetaData, addFileBehaviour, StreamStateBehaviour.OpenNewStreamForReadingAndWriting, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
        }
示例#26
0
 public static void ExportToOtherFileStorage(string sourcefileStorageName, Guid dataIdentifier, AddFileBehaviour addFileBehaviour, string targetfileStorageName)
 {
     FileStorageHandler sourceFileStorageHandler = FileStorageHandler.Open(sourcefileStorageName);
     FileStorageHandler targetFileStorageHandler = FileStorageHandler.Open(targetfileStorageName);
     sourceFileStorageHandler.ExportToOtherFileStorage(dataIdentifier, targetFileStorageHandler, addFileBehaviour, StreamStateBehaviour.OpenNewStreamForReading, StreamStateBehaviour.OpenNewStreamForReading, StreamStateBehaviour.OpenNewStreamForReadingAndWriting, StreamStateBehaviour.OpenNewStreamForReadingAndWriting);
 }