rendered paste body // ED2Kv2 packet...
// Most common scenario: hash + blocks to request + every one
// having 2 uint32 tags
CMemFile data(16 + 1 + MAX_BLOCKS_REQUESTED*((2+4)*2));
data.WriteHash(m_reqfile->GetFileHash());
uint8 nBlocks = m_PendingBlocks_list.size();
if (nBlocks > MAX_BLOCKS_REQUESTED) {
nBlocks = MAX_BLOCKS_REQUESTED;
}
data.WriteUInt8(nBlocks);
std::list<Pending_Block_Struct*>::iterator it = m_PendingBlocks_list.begin();
while (nBlocks) {
wxASSERT(it != m_PendingBlocks_list.end());
wxASSERT( pending->block->StartOffset <= pending->block->EndOffset );
pending->fZStreamError = 0;
pending->fRecovered = 0;
CTagVarInt(/*Noname*/0,pending->StartOffset).WriteTagToFile(data);
CTagVarInt(/*Noname*/0,pending->EndOffset).WriteTagToFile(data);
nBlocks--;
}
packet = new CPacket(&data, OP_ED2KV2HEADER, OP_REQUESTPARTS);