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(); }