void StatisticsWindow::update()

in analyzers/src/watch/nc_windows/statistics_window.cpp [137:172]


void StatisticsWindow::update(const ProtocolStatistic& d)
{
    _statistic = d;
    if(_statistic.empty() || _window == nullptr)
    {
        return;
    }

    unsigned int line = STATISTICS::FIRST_OPERATION_LINE;
    for(unsigned int i = STATISTICS::DEFAULT_GROUP; i <= _activeProtocol->getGroups(); i++)
    {
        std::size_t m = 0; // sum of all counters

        for(std::size_t tmp = _activeProtocol->getGroupBegin(i); tmp < _activeProtocol->getGroupBegin(i + 1); tmp++)
        {
            m += _statistic[tmp];
        }
        if(canWrite(line))
        {
            mvwprintw(_window, line - (_scrollOffset.at(_activeProtocol)), FIRST_CHAR_POS + 25, "%d", m);
        }
        line++;
        for(unsigned int j = _activeProtocol->getGroupBegin(i); j < _activeProtocol->getGroupBegin(i + 1); j++)
        {
            if(canWrite(line))
            {
                mvwprintw(_window, line - _scrollOffset.at(_activeProtocol), COUNTERS_POS, "%lu ", _statistic[j]);
                mvwprintw(_window, line - _scrollOffset.at(_activeProtocol), PERSENT_POS, "%-3.2f%% ",
                          m > 0 ? static_cast<double>(_statistic[j]) / static_cast<double>(m) * 100.0 : 0.0);
            }
            line++;
        }
        line++;
    }
    wrefresh(_window);
}