예제 #1
0
 public void Save(Stream stream)
 {
     this.SaveDiagnosticStream(stream, "Original.bin");
     lock (this.synchronizationObject)
     {
         using (DisposalEscrow disposalEscrow = new DisposalEscrow("CobaltStore.Save"))
         {
             CobaltFile          cobaltFile          = this.CreateCobaltFile(disposalEscrow, true);
             CobaltFilePartition cobaltFilePartition = cobaltFile.GetCobaltFilePartition(FilePartitionId.Content);
             Metrics             metrics;
             cobaltFilePartition.SetStream(GenericFda.ContentStreamId, new BytesFromStream(stream), ref metrics);
             cobaltFilePartition.CommitChanges();
             this.SaveDiagnosticDocument(cobaltFile, "AfterSave.bin");
         }
     }
 }
예제 #2
0
        public Stream GetDocumentStream()
        {
            Stream result;

            lock (this.synchronizationObject)
            {
                using (DisposalEscrow disposalEscrow = new DisposalEscrow("CobaltStore.GetDocumentStream"))
                {
                    CobaltFile          cobaltFile          = this.CreateCobaltFile(disposalEscrow, false);
                    CobaltFilePartition cobaltFilePartition = cobaltFile.GetCobaltFilePartition(FilePartitionId.Content);
                    Bytes  stream  = cobaltFilePartition.GetStream(CobaltFilePartition.ContentStreamId);
                    Stream stream2 = new StreamFromBytes(stream, 0UL);
                    Stream stream3 = new StreamDisposalWrapper(stream2, disposalEscrow.Transfer("GetDocumentStream-StreamDisposalWrapper"));
                    result = stream3;
                }
            }
            return(result);
        }
예제 #3
0
        private void SaveDiagnosticDocument(CobaltFile cobaltFile, string fileName)
        {
            if (!this.diagnosticsEnabled)
            {
                return;
            }
            CobaltFilePartition cobaltFilePartition = cobaltFile.GetCobaltFilePartition(FilePartitionId.Content);
            Bytes  stream   = cobaltFilePartition.GetStream(CobaltFilePartition.ContentStreamId);
            string filePath = this.GetFilePath(fileName);

            using (StreamFromBytes streamFromBytes = new StreamFromBytes(stream, 0UL))
            {
                using (FileStream fileStream = File.Open(filePath, FileMode.Create, FileAccess.Write))
                {
                    streamFromBytes.CopyTo(fileStream);
                }
            }
        }