public void HashArrived(ChunkHash ch)
        {
            if (!receivedHash.Get(ch.ChunkId))
            {
                lock (hashes) {
                    hashes[ch.ChunkId].Hash = ch.Hash;
                    received++;
                    receivedHash.Set(ch.ChunkId, true);

                    Debug.WriteLine("sveukupno" + received + "/" + numberOfChunks);
                    if (received == numberOfChunks)
                    {
                        AllHashesCollected();
                    }
                }
            }
        }
 public HashManager(int ep, int numberOfChunks, int fileId, HashManagerListener listener)
 {
     this.hml            = listener;
     this.fileId         = fileId;
     this.senderId       = ep;
     this.numberOfChunks = numberOfChunks;
     receivedHash        = new BitArray(numberOfChunks, false);
     hashes = new ChunkHash[numberOfChunks];
     for (int i = 0; i < hashes.Length; i++)
     {
         hashes[i]         = new ChunkHash();
         hashes[i].ChunkId = i;
     }
     received       = 0;
     timer          = new Timer(Sizes.GetIntervalForHashes(numberOfChunks));
     timer.Elapsed += RequestHashResend;
     timer.Start();
 }