Пример #1
0
        private static BlobPackage AcquireAndWriteHeader(string path, DateTime?date = null)
        {
            if (path == null)
            {
                throw new ArgumentNullException();
            }
            if (date != null && date.Value.Ticks == 0)
            {
                date = null;
            }
            path = Path.GetFullPath(path);
            var name    = Path.GetFileName(path);
            var dirpath = Path.GetDirectoryName(path);

            lock (_lock)
            {
                var         dir = GetDirectory(dirpath);
                BlobPackage pkg;
                if (dir.availablePackages.Count != 0)
                {
                    var idx = dir.availablePackages.Count - 1;
                    pkg = dir.availablePackages[idx];
                    dir.availablePackages.RemoveAt(idx);
                }
                else
                {
                    pkg = new BlobPackage()
                    {
                        fileName = Guid.NewGuid() + ".shaman-blobs", directory = dir
                    };
                }
                dir.busyPackages.Add(pkg);
                pkg.WriteHeader(name, date);
                return(pkg);
            }
        }
Пример #2
0
 private static BlobPackage AcquireAndWriteHeader(string path)
 {
     if (path == null) throw new ArgumentNullException();
     path = Path.GetFullPath(path);
     var name = Path.GetFileName(path);
     var dirpath = Path.GetDirectoryName(path);
     lock (_lock)
     {
         var dir = GetDirectory(dirpath);
         BlobPackage pkg;
         if (dir.availablePackages.Count != 0)
         {
             var idx = dir.availablePackages.Count - 1;
             pkg = dir.availablePackages[idx];
             dir.availablePackages.RemoveAt(idx);
         }
         else
         {
             pkg = new BlobPackage() { fileName = Guid.NewGuid() + ".shaman-blobs", directory = dir };
         }
         dir.busyPackages.Add(pkg);
         pkg.WriteHeader(name);
         return pkg;
     }
 }
Пример #3
0
 internal BlobStream(BlobPackage pkg, bool autocommit)
 {
     this.package    = pkg;
     this.autocommit = autocommit;
 }
Пример #4
0
 internal BlobStream(BlobPackage pkg, bool autocommit)
 {
     this.package = pkg;
     this.autocommit = autocommit;
 }