RavenFS.Synchronization.Rdc.Wrapper.StorageSignatureRepository.Flush C# (CSharp) Метод

Flush() публичный Метод

public Flush ( IEnumerable signatureInfos ) : void
signatureInfos IEnumerable
Результат void
		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>();
		}

Usage Example

        public void Should_assign_signature_to_proper_file()
        {
            var tested = new StorageSignatureRepository(transactionalStorage, "test.bin");
            using(var sigContent = tested.CreateContent("test.bin.0.sig"))
            {
                sigContent.WriteByte(3);
            }
            tested.Flush(new[] { SignatureInfo.Parse("test.bin.0.sig") } );

            var result = tested.GetByName("test.bin.0.sig");
            Assert.Equal("test.bin.0.sig", result.Name);
            Assert.Equal(1, result.Length);
        }