MCPcopy Create free account
hub / github.com/amule-project/amule / ProcessRequestPartsPacket

Method ProcessRequestPartsPacket

src/UploadClient.cpp:691–739  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

689}
690
691void CUpDownClient::ProcessRequestPartsPacket(const uint8_t* pachPacket, uint32 nSize, bool largeblocks) {
692
693 CMemFile data(pachPacket, nSize);
694
695 CMD4Hash reqfilehash = data.ReadHash();
696
697 uint64 auStartOffsets[3];
698 uint64 auEndOffsets[3];
699
700 if (largeblocks) {
701 auStartOffsets[0] = data.ReadUInt64();
702 auStartOffsets[1] = data.ReadUInt64();
703 auStartOffsets[2] = data.ReadUInt64();
704
705 auEndOffsets[0] = data.ReadUInt64();
706 auEndOffsets[1] = data.ReadUInt64();
707 auEndOffsets[2] = data.ReadUInt64();
708 } else {
709 auStartOffsets[0] = data.ReadUInt32();
710 auStartOffsets[1] = data.ReadUInt32();
711 auStartOffsets[2] = data.ReadUInt32();
712
713 auEndOffsets[0] = data.ReadUInt32();
714 auEndOffsets[1] = data.ReadUInt32();
715 auEndOffsets[2] = data.ReadUInt32();
716 }
717
718 for (unsigned int i = 0; i < itemsof(auStartOffsets); i++) {
719 AddDebugLogLineN(logClient,
720 CFormat("Client %s requests %d File block %d-%d (%d bytes):")
721 % GetFullIP() % i % auStartOffsets[i] % auEndOffsets[i]
722 % (auEndOffsets[i] - auStartOffsets[i]));
723 if (auEndOffsets[i] > auStartOffsets[i]) {
724 Requested_Block_Struct* reqblock = new Requested_Block_Struct;
725 reqblock->StartOffset = auStartOffsets[i];
726 reqblock->EndOffset = auEndOffsets[i];
727 md4cpy(reqblock->FileID, reqfilehash.GetHash());
728 reqblock->transferred = 0;
729 AddReqBlock(reqblock, false);
730 } else {
731 if (auEndOffsets[i] != 0 || auStartOffsets[i] != 0) {
732 AddDebugLogLineN(logClient, "Client request is invalid!");
733 }
734 }
735 }
736 if (theApp->uploadDiskIOThread) {
737 theApp->uploadDiskIOThread->NewBlockRequestsAvailable();
738 }
739}
740
741void CUpDownClient::ProcessRequestPartsPacketv2(const CMemFile& data) {
742

Callers 2

ProcessPacketMethod · 0.80
ProcessExtPacketMethod · 0.80

Calls 7

CFormatClass · 0.85
md4cpyFunction · 0.85
ReadUInt64Method · 0.80
ReadUInt32Method · 0.80
ReadHashMethod · 0.45
GetHashMethod · 0.45

Tested by

no test coverage detected