Beispiel #1
0
void 
NetworkTests::sendMockData(void* eventTarget)
{
    // send first message (file size)
    String size = barrier::string::sizeTypeToString(kMockDataSize);
    FileChunk* sizeMessage = FileChunk::start(size);
    
    m_events.addEvent(Event(m_events.forFile().fileChunkSending(), eventTarget, sizeMessage));

    // send chunk messages with incrementing chunk size
    size_t lastSize = 0;
    size_t sentLength = 0;
    while (true) {
        size_t dataSize = lastSize + kMockDataChunkIncrement;

        // make sure we don't read too much from the mock data.
        if (sentLength + dataSize > kMockDataSize) {
            dataSize = kMockDataSize - sentLength;
        }

        // first byte is the chunk mark, last is \0
        FileChunk* chunk = FileChunk::data(m_mockData, dataSize);
        m_events.addEvent(Event(m_events.forFile().fileChunkSending(), eventTarget, chunk));

        sentLength += dataSize;
        lastSize = dataSize;

        if (sentLength == kMockDataSize) {
            break;
        }

    }
    
    // send last message
    FileChunk* transferFinished = FileChunk::end();
    m_events.addEvent(Event(m_events.forFile().fileChunkSending(), eventTarget, transferFinished));
}