private static HierarchySyncMetadataItem.SyncMetadataAttachmentStream Instantate(StreamAttachment attachment, StreamBase.Capabilities streamCapabilities) { if (attachment == null) { HierarchySyncMetadataItem.Tracer.TraceDebug(0L, "SyncMetadataAttachmentStream:Instantate - Returning null stream as attachment was also null"); return(null); } HierarchySyncMetadataItem.SyncMetadataAttachmentStream result; using (DisposeGuard disposeGuard = default(DisposeGuard)) { disposeGuard.Add <StreamAttachment>(attachment); PropertyOpenMode propertyOpenMode = ((streamCapabilities & StreamBase.Capabilities.Writable) == StreamBase.Capabilities.Writable) ? PropertyOpenMode.Modify : PropertyOpenMode.ReadOnly; HierarchySyncMetadataItem.Tracer.TraceDebug <PropertyOpenMode, StreamBase.Capabilities>(0L, "SyncMetadataAttachmentStream:Instantate - Getting content stream. Open Mode={0}, Stream Capabilities={1}", propertyOpenMode, streamCapabilities); Stream contentStream = attachment.GetContentStream(propertyOpenMode); disposeGuard.Add <Stream>(contentStream); HierarchySyncMetadataItem.SyncMetadataAttachmentStream syncMetadataAttachmentStream = new HierarchySyncMetadataItem.SyncMetadataAttachmentStream(attachment, contentStream, streamCapabilities); disposeGuard.Success(); result = syncMetadataAttachmentStream; } return(result); }
public static HierarchySyncMetadataItem.SyncMetadataAttachmentStream GetExistingAttachment(HierarchySyncMetadataItem item, string attachmentName, StreamBase.Capabilities streamCapabilities) { ArgumentValidator.ThrowIfNull("item", item); ArgumentValidator.ThrowIfNullOrWhiteSpace("attachmentName", attachmentName); return(HierarchySyncMetadataItem.SyncMetadataAttachmentStream.Instantate(item.GetStreamAttachment(attachmentName), streamCapabilities)); }
private SyncMetadataAttachmentStream(StreamAttachment streamAttachment, Stream contentStream, StreamBase.Capabilities streamCapabilities) : base(contentStream, true, streamCapabilities | StreamBase.Capabilities.Seekable) { ArgumentValidator.ThrowIfNull("streamAttachment", streamAttachment); ArgumentValidator.ThrowIfNull("contentStream", contentStream); this.streamAttachment = streamAttachment; this.shouldSaveOnDispose = ((streamCapabilities & StreamBase.Capabilities.Writable) == StreamBase.Capabilities.Writable); }