internal FileInfo getPathByID(BlobID id) { DirectoryInfo objDir = getObjectsDirectory(); string idStr = id.ToString(); string path = System.IO.Path.Combine(objDir.FullName, idStr.Substring(0, 2), idStr.Substring(2)); return new FileInfo(path); }
internal FileInfo getPathByID(BlobID id) { DirectoryInfo objDir = getObjectsDirectory(); string idStr = id.ToString(); string path = System.IO.Path.Combine(objDir.FullName, idStr.Substring(0, 2), idStr.Substring(2)); return(new FileInfo(path)); }
void TestQueryBlobs() { // Create some Blobs: Blob bl0 = new Blob.Builder(Encoding.UTF8.GetBytes("Sample README content.")); Console.WriteLine(bl0.ID.ToString()); Blob bl1 = new Blob.Builder(Encoding.UTF8.GetBytes("Sample content.")); Console.WriteLine(bl1.ID.ToString()); var blobs = new ImmutableContainer <BlobID, Blob>(bl => bl.ID, bl0, bl1); var db = getDataContext(); // Check which blobs exist already: var qBlobs = db.ExecuteListQueryAsync(new QueryBlobsExist(bl0.ID, bl1.ID), expectedCapacity: blobs.Count); qBlobs.Wait(); // Find the blobs to persist: var blobIDsToPersist = blobs.Keys.Except(qBlobs.Result).ToArray(); // Persist each blob asynchronously: Task <Blob>[] persists = new Task <Blob> [blobIDsToPersist.Length]; for (int i = 0; i < blobIDsToPersist.Length; ++i) { BlobID id = blobIDsToPersist[i]; Console.WriteLine("PERSIST {0}", id.ToString()); persists[i] = db.ExecuteNonQueryAsync(new PersistBlob(blobs[id])); } Console.WriteLine("Waiting for persists..."); Task.WaitAll(persists); Console.WriteLine("Complete."); }
public Task<Errorable<BlobID>> ResolvePartialID(BlobID.Partial id) { FileInfo[] fis = system.getPathsByPartialID(id); if (fis.Length == 1) return Task.FromResult( BlobID.TryParse(id.ToString().Substring(0, 2) + fis[0].Name) ); if (fis.Length == 0) return Task.FromResult( (Errorable<BlobID>) new BlobIDPartialNoResolutionError(id) ); return Task.FromResult( (Errorable<BlobID>) new BlobIDPartialAmbiguousResolutionError(id, fis.SelectAsArray(f => BlobID.TryParse(id.ToString().Substring(0, 2) + f.Name).Value)) ); }
internal FileInfo[] getPathsByPartialID(BlobID.Partial partial) { DirectoryInfo objDir = getObjectsDirectory(); string idStr = partial.ToString(); string path = System.IO.Path.Combine(objDir.FullName, idStr.Substring(0, 2)); var di = new DirectoryInfo(path); if (!di.Exists) return new FileInfo[0]; return di.GetFiles(idStr.Substring(2) + "*"); }