public void Flush(IEnumerable <SignatureInfo> signatureInfos) { if (_createdFiles.Count == 0) { throw new ArgumentException("Must have at least one signature info", "signatureInfos"); } CloseCreatedStreams(); _storage.Batch( accessor => { accessor.ClearSignatures(_fileName); foreach (var item in _createdFiles) { var item1 = item; var level = SignatureInfo.Parse(item.Key).Level; accessor.AddSignature(_fileName, level, stream => { using (var cachedSigContent = File.OpenRead(item1.Key)) { cachedSigContent.CopyTo(stream); } }); } }); _createdFiles = new Dictionary <string, FileStream>(); }
public SignatureInfo GetByName(string sigName) { SignatureInfo result = null; _storage.Batch( accessor => { var signatureLevel = GetSignatureLevel(sigName, accessor); if (signatureLevel == null) { throw new FileNotFoundException(sigName + " not found in the repo"); } result = SignatureInfo.Parse(sigName); result.Length = accessor.GetSignatureSize(signatureLevel.Id, signatureLevel.Level); }); return(result); }
public IEnumerable <SignatureInfo> GetByFileName() { return(from item in GetSigFileNamesByFileName() select SignatureInfo.Parse(item)); }
private static SignatureInfo ExtractFileNameAndLevel(string sigName) { return(SignatureInfo.Parse(sigName)); }