private async static Task <Dictionary <HashTypes, byte[]> > GenerateHashesAsBytes(Stream stream, HashTypes hashtypes)
        {
            var buffer  = new byte[BUFFER_SIZE];
            var hashers = hashtypes.GetHashers();

            await Task.Run(() =>
            {
                var bRead = 0;
                do
                {
                    bRead = stream.Read(buffer, 0, buffer.Length);

                    var tasks = new List <Task>();

                    foreach (var hasher in hashers)
                    {
                        tasks.Add(Task.Run(() => hasher.Value.GenerateIncrementalHash(buffer, bRead)));
                    }

                    Task.WaitAll(tasks.ToArray());
                } while (bRead > 0);
            });

            var rslt = new Dictionary <HashTypes, byte[]>();

            foreach (var hasher in hashers)
            {
                rslt.Add(hasher.Key, hasher.Value.Hash);
            }

            return(rslt);
        }
Beispiel #2
0
        public void TestGetHashers(HashTypes hashTypes, int numberOfHashers)
        {
            var hashers = hashTypes.GetHashers();

            hashers.Count.Should().Be(numberOfHashers);
        }