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); } }
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; } }
internal BlobStream(BlobPackage pkg, bool autocommit) { this.package = pkg; this.autocommit = autocommit; }