void AddReceivedPacketBufferHoleEntry(ReceivedPacketBuffer receivedPacketBuffer, Int32 firstIndex, Int32 lastIndex) { Int32 availableIndex = -1; for (Int32 i = 0; i < receivedPacketBuffer.Holes.Length; i++) { if (receivedPacketBuffer.Holes[i].FirstIndex == -1 && receivedPacketBuffer.Holes[i].LastIndex == -1) { availableIndex = i; break; } } // if we could not find an empty entry, enlarge the array. if (availableIndex == -1) { ReceivedPacketBufferHoles[] newHoles = new ReceivedPacketBufferHoles[receivedPacketBuffer.Holes.Length + 1]; Array.Copy(receivedPacketBuffer.Holes, newHoles, receivedPacketBuffer.Holes.Length); receivedPacketBuffer.Holes = newHoles; availableIndex = receivedPacketBuffer.Holes.Length - 1; } receivedPacketBuffer.Holes[availableIndex].FirstIndex = firstIndex; receivedPacketBuffer.Holes[availableIndex].LastIndex = lastIndex; }