public void Have(byte[] data) { PacketGenerator gs = new PacketGenerator(data); int piece = gs.ReadInt(); #if DEBUG Console.WriteLine("Successfully uploaded piece {0}", piece); #endif }
public void FetchAndSendPiece(byte[] packet) { PacketGenerator gs = new PacketGenerator(packet); int pieceRequested = gs.ReadInt(); int pieceOffset = gs.ReadInt(); int length = gs.ReadInt(); byte[] fileData = new byte[1]; if (CurrentFile.ReadPiece(pieceRequested, ref fileData, pieceOffset, length)) { #if DEBUG Console.WriteLine("Sending piece: {0}", pieceRequested); #endif byte[] send = PacketGenerator.Piece(pieceRequested, pieceOffset, fileData); Send(send); } }
public int SavePieceAndRequestForNewOne(byte[] packet) { PacketGenerator gs = new PacketGenerator(packet); int piece = gs.ReadInt(); int pieceOffset = gs.ReadInt(); byte[] data = gs.ReadLeftoverByteArray(); CurrentFile.WritePiece(piece, pieceOffset, data); Console.WriteLine("Received piece: {0} {1:0.000}%", piece, ((float)CurrentFile.GetDownloadedSize() / (float)CurrentFile.GetSize()) * 100.0); if (data.Length < 1024 * 16) { byte[] have = PacketGenerator.Have(piece); Send(have); // Console.WriteLine("Successfully downloaded piece: {0}", piece); } return(RequestForNewPiece()); }