void RealtimeModel::InsertPacket(PacketInfoEx *pi)
{
    // One day is 86400 seconds, each second 4 bytes, which sums up to be 337.5KB.
    // 10 processed with tx/rx rate: 6.75MB

    // Insert a RtModelItem if PUID not Exist
    Lock();
    if( _items.count(pi->puid) == 0 )
    {
        _items[pi->puid] = RtModelItem();
    }
    Unlock();

    // Fill Vectors
    Fill();

    // Add the Packet's Size to Vectors
    Lock();
    RtModelItem &item = _items[pi->puid];
    RtModelItem &itemAll = _items[PROCESS_ALL];

    if( pi->dir == DIR_UP )
    {
        item.rate_tx_1s.back()  += pi->size;
        item.rate_tx_10s.back() += pi->size;
        item.rate_tx_60s.back() += pi->size;

        itemAll.rate_tx_1s.back()  += pi->size;
        itemAll.rate_tx_10s.back() += pi->size;
        itemAll.rate_tx_60s.back() += pi->size;
    }
    else if( pi->dir == DIR_DOWN )
    {
        item.rate_rx_1s.back()  += pi->size;
        item.rate_rx_10s.back() += pi->size;
        item.rate_rx_60s.back() += pi->size;

        itemAll.rate_rx_1s.back()  += pi->size;
        itemAll.rate_rx_10s.back() += pi->size;
        itemAll.rate_rx_60s.back() += pi->size;
    }
    Unlock();
}
Example #2
0
void RealtimeModel::InsertPacket(PacketInfoEx *pi)
{
    // Each process uses about 4k * 6 * 4B = 96 KB memoory
    // 100 processes use about 9.6 MB

    // Insert a RtModelItem if PUID not Exist
    Lock();
    if (_items.count(pi->puid) == 0 )
    {
        _items[pi->puid] = RtModelItem();
    }
    Unlock();

    // Fill Vectors
    Fill();

    // Add the Packet's Size to Vectors
    Lock();
    RtModelItem &item = _items[pi->puid];
    RtModelItem &itemAll = _items[PROCESS_ALL];

    if (pi->dir == DIR_UP )
    {
        item.rate_tx_1s.back()  += pi->size;
        item.rate_tx_10s.back() += pi->size;
        item.rate_tx_60s.back() += pi->size;

        itemAll.rate_tx_1s.back()  += pi->size;
        itemAll.rate_tx_10s.back() += pi->size;
        itemAll.rate_tx_60s.back() += pi->size;
    }
    else if (pi->dir == DIR_DOWN )
    {
        item.rate_rx_1s.back()  += pi->size;
        item.rate_rx_10s.back() += pi->size;
        item.rate_rx_60s.back() += pi->size;

        itemAll.rate_rx_1s.back()  += pi->size;
        itemAll.rate_rx_10s.back() += pi->size;
        itemAll.rate_rx_60s.back() += pi->size;
    }
    Unlock();
}
RealtimeModel::RealtimeModel()
{
    _startTime = (int)time(0);
    _items[PROCESS_ALL] = RtModelItem();
}