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; } }
private INamedStream OpenLazyDocument(IDocumentId documentId, FileAccess access, FileShare share) { var documentInfo = GetDocumentInfo(documentId); var result = new Document { Name = documentInfo.Name, Stream = new LazyConstructableStream( streamFactory: () => OpenDocumentStream(documentId, access, share), optimizedSizeGetterWithoutStreamCreating: () => documentInfo.ContentProvider?.OptimizedContentLengthProvider) }; return(result); }