Ejemplo n.º 1
0
        public static BufferedStream Open(string path, FileAccess access = FileAccess.Read)
        {
            Stream file;

            switch (access)
            {
            case FileAccess.Read:
                file = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read);
                break;

            case FileAccess.Write:
            case FileAccess.ReadWrite:
                file = File.Open(path, FileMode.Open, access, FileShare.None);
                break;

            default:
                throw new NotImplementedException($"{nameof(access)} mode is not implemented for {access}");
            }
            try
            {
                return(new BufferedStream(file, BufferSize));
            }
            catch
            {
                file?.Dispose();
                throw;
            }
        }
Ejemplo n.º 2
0
        private Stream OpenDocumentStream(IDocumentId documentId, FileAccess access, FileShare share)
        {
            GetDocumentInfo(documentId).ContentProvider?.ContentPreparation(documentId.DocumentId);
            var file = File.Open(documentId.DocumentId, FileMode.Open, access, share);

            try
            {
                return(SmartLowMemoryStream.Open(file));
            }
            catch
            {
                file?.Dispose();
                throw;
            }
        }
Ejemplo n.º 3
0
        public IDocumentId MakeDocument(IContentManagerArenaId arena, INamedStream document)
        {
            if (document is null)
            {
                throw new ArgumentNullException(nameof(document));
            }
            if (document.Stream is null)
            {
                throw new ArgumentNullException(nameof(document) + "." + nameof(document.Stream));
            }
            var documentId = new DocumentIdImpl(arena);

            using (var content = File.Open(documentId.DocumentId, FileMode.Open, FileAccess.Write, FileShare.None))
            {
                //document.Stream.Flush();
                document.Stream.CopyTo(content);
                //content.Flush();
            };
            AddDocumentInfo(documentId, new DocumentInfo(document.Name, OnCloseArenaDeleteDocument, null));
            return(documentId);
        }
Ejemplo n.º 4
0
        public static Stream Open()
        {
            var innerStream = File.Open(Path.GetTempFileName(), FileMode.OpenOrCreate, FileAccess.ReadWrite, FileOptions.DeleteOnClose);

            try
            {
                var outerStream = new BufferedStream(innerStream, BufferSize);
                try
                {
                    return(new NotFlushingBufferOnDisposeStream(outerStream, innerStream));
                }
                catch
                {
                    outerStream.Dispose();
                    throw;
                }
            }
            catch
            {
                innerStream?.Dispose();
                throw;
            }
        }