analyzers/src/watch/nc_windows/statistics_window.h (28 lines of code) (raw):
//------------------------------------------------------------------------------
// Author: Vitali Adamenka
// Description: Header for describe ncurses statistic window.
// Copyright (c) 2015 EPAM Systems. All Rights Reserved.
//------------------------------------------------------------------------------
/*
This file is part of Nfstrace.
Nfstrace is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, version 2 of the License.
Nfstrace is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Nfstrace. If not, see <http://www.gnu.org/licenses/>.
*/
//------------------------------------------------------------------------------
#ifndef STATISTICS_WINDOW_H
#define STATISTICS_WINDOW_H
//------------------------------------------------------------------------------
#include <vector>
#include <unordered_map>
#include "../protocols/abstract_protocol.h"
#include "main_window.h"
//------------------------------------------------------------------------------
class StatisticsWindow
{
using ProtocolStatistic = std::vector<std::size_t>;
using StatisticsContainers = std::unordered_map<AbstractProtocol*, ProtocolStatistic>;
public:
StatisticsWindow(MainWindow&, StatisticsContainers&);
~StatisticsWindow();
/*! Scroll content of Statistic Winodow Up or Down
*/
void scrollContent(int);
/*! Change active protocol. Print new protocl's commands.
*/
void updateProtocol(AbstractProtocol*);
/*! Update counters on Statistics Window
*/
void update(const ProtocolStatistic&);
/*! Resize Statistic Window
*/
void resize(MainWindow&);
/*! Only set active protocol, do not update new protocol's commands.
*/
void setProtocol(AbstractProtocol*);
private:
void destroy();
bool canWrite(unsigned int);
WINDOW* _window;
AbstractProtocol* _activeProtocol;
std::vector<std::string> _allProtocols;
std::unordered_map<AbstractProtocol*, unsigned int> _scrollOffset;
ProtocolStatistic _statistic;
};
//------------------------------------------------------------------------------
#endif //STATISTICS_WINDOWS_H
//------------------------------------------------------------------------------