|
1387 |
} |
1387 |
} |
1388 |
// See if all pending ack'ed; if so we can delete the data |
1388 |
// See if all pending ack'ed; if so we can delete the data |
1389 |
if (m_pendingData) |
1389 |
if (m_pendingData) |
1390 |
{ // Data exists, see if can be deleted |
1390 |
{ // Data exists, see if can be entirely deleted |
1391 |
if (m_pendingData->SizeFromSeq (m_firstPendingSequence, m_highestRxAck) == 0) |
1391 |
if (m_pendingData->SizeFromSeq (m_firstPendingSequence, m_highestRxAck) == 0) |
1392 |
{ // All pending acked, can be deleted |
1392 |
{ // All pending acked, can be deleted |
1393 |
m_pendingData->Clear (); |
1393 |
m_pendingData->Clear (); |
|
1399 |
Simulator::GetDelayLeft (m_retxEvent)).GetSeconds()); |
1399 |
Simulator::GetDelayLeft (m_retxEvent)).GetSeconds()); |
1400 |
m_retxEvent.Cancel (); |
1400 |
m_retxEvent.Cancel (); |
1401 |
} |
1401 |
} |
|
|
1402 |
else // else delete just a portion |
1403 |
{ |
1404 |
// std::cout << "begin delete portion of pending data;" |
1405 |
// << " m_firstPendingSequence=" << m_firstPendingSequence |
1406 |
// << "; m_highestRxAck=" << m_highestRxAck |
1407 |
// << "; size=" << m_pendingData->size << std::endl; |
1408 |
|
1409 |
for (std::vector< Ptr<Packet> >::iterator dataI = m_pendingData->data.begin (); |
1410 |
dataI != m_pendingData->data.end ();) |
1411 |
{ |
1412 |
Ptr<Packet> data = *dataI; |
1413 |
// std::cout << "pending packet of size " << data->GetSize () << std::endl; |
1414 |
if (m_firstPendingSequence + SequenceNumber (data->GetSize ()) <= m_highestRxAck) |
1415 |
{ |
1416 |
dataI = m_pendingData->data.erase (dataI); |
1417 |
m_pendingData->size -= data->GetSize (); |
1418 |
m_firstPendingSequence += data->GetSize (); |
1419 |
} |
1420 |
else |
1421 |
{ |
1422 |
break; |
1423 |
} |
1424 |
} |
1425 |
// std::cout << " end delete portion of pending data;" |
1426 |
// << " m_firstPendingSequence=" << m_firstPendingSequence |
1427 |
// << "; m_highestRxAck=" << m_highestRxAck |
1428 |
// << "; size=" << m_pendingData->size << std::endl; |
1429 |
} |
1402 |
} |
1430 |
} |
1403 |
// Try to send more data |
1431 |
// Try to send more data |
1404 |
SendPendingData (m_connected); |
1432 |
SendPendingData (m_connected); |