Fix Idle count
[samplevnf.git] / VNFs / DPPD-PROX / tools / flow_extract / progress.hpp
1 /*
2 // Copyright (c) 2010-2017 Intel Corporation
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 */
16
17 #ifndef _PROGRESS_H_
18 #define _PROGRESS_H_
19
20 #include <inttypes.h>
21 #include <vector>
22 #include <utility>
23 #include <string>
24
25 using namespace std;
26
27 class Progress {
28 public:
29         Progress(size_t maxProgress, bool inPlace = true, bool showElapsedTime = true);
30         void setTitle(const string &prefix) {this->title = title;}
31         void setProgress(size_t curProgress);
32         void setProgress();
33         uint32_t addDetail(const string& detail);
34         void clearDetails() {details.clear();}
35         void setDetail(uint32_t idx, uint32_t val);
36         bool couldRefresh();
37         void refresh(bool withNewLine = false);
38 private:
39         uint64_t firstRefresh;
40         uint64_t lastRefresh;
41         size_t maxProgress;
42         size_t curProgress;
43         bool inPlace;
44         bool showElapsedTime;
45         size_t prevLength;
46         string title;
47         vector<pair<string, uint32_t> > details;
48 };
49
50 #endif /* _PROGRESS_H_ */