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);
 }