示例#1
0
        protected override CBlopOutputStream NewBlopOutputStream(CBlop aBlop)
        {
            var aFileInfo         = this.GetObjectFileInfo(aBlop);
            var aStream           = File.OpenWrite(aFileInfo.FullName);
            var aBlopOutputStream = new CFileSystemBlopOutputStream(aStream);

            return(aBlopOutputStream);
        }
示例#2
0
        internal override long GetBlopLength(CBlop aBlop)
        {
            var aFileInfo = this.GetObjectFileInfo(aBlop);
            var aLength   = aFileInfo.Exists
                     ? aFileInfo.Length
                     : 0
            ;

            return(aLength);
        }
示例#3
0
 internal void VisitSave(CBlop aBlop, Stream aStream)
 {
     if (aBlop.IsLocallyDeleted)
     {
         this.Delete(aBlop);
     }
     else
     {
         using (var aBlopOutputStream = this.NewBlopOutputStream(aBlop))
         {
             aStream.CopyTo(aBlopOutputStream.Stream);
             aBlopOutputStream.Commit();
         }
     }
 }
示例#4
0
        internal override Stream NewBlopInputStream(CBlop aBlop)
        {
            var aFileInfo = this.GetObjectFileInfo(aBlop);

            if (aFileInfo.IsNullRef())
            {
                return(Stream.Null);
            }
            aFileInfo.Refresh();
            var aStream = aFileInfo.Exists
                        ? (Stream)File.OpenRead(aFileInfo.FullName)
                        : Stream.Null
            ;

            return(aStream);
        }
示例#5
0
 protected override void Delete(CBlop aBlop)
 {
     this.GetObjectFileInfo(aBlop).Delete();
 }
示例#6
0
 public override void Load(CBlop aBlop)
 {
     // The blop will request the input stream or the length as soon as it is used.
     // Not sure if we need some special actions for databases.
 }
示例#7
0
 public abstract void Load(CBlop aBlop);
示例#8
0
 protected override CBlopOutputStream NewBlopOutputStream(CBlop aBlop)
 => throw new InvalidOperationException();
示例#9
0
 internal override Stream NewBlopInputStream(CBlop aBlop)
 => Stream.Null;
示例#10
0
 internal override long GetBlopLength(CBlop aBlop)
 => 0;
示例#11
0
 protected override void Delete(CBlop aBlop)
 => throw new InvalidOperationException();
示例#12
0
 public override void Load(CBlop aBlop)
 => throw new InvalidOperationException();
示例#13
0
 protected abstract void Delete(CBlop aBlop);
示例#14
0
 protected abstract CBlopOutputStream NewBlopOutputStream(CBlop aBlop);
示例#15
0
 internal abstract Stream NewBlopInputStream(CBlop aBlop);
示例#16
0
 internal abstract long GetBlopLength(CBlop aBlop);