#ifndef USER_TRAFF_H
#define USER_TRAFF_H
+#include "resetable.h"
+#include "const.h"
+
#include <iostream>
#include <vector>
-
-#include "const.h"
-#include "os_int.h"
+#include <cstdint>
enum TRAFF_DIRECTION {TRAFF_UPLOAD, TRAFF_DOWNLOAD};
typedef ContainerType::size_type IndexType;
DIR_TRAFF() : traff(DIR_NUM) {}
- DIR_TRAFF(const DIR_TRAFF & ts) : traff(ts.traff) {}
- DIR_TRAFF & operator=(const DIR_TRAFF & ts) { traff = ts.traff; return *this; }
const uint64_t & operator[](IndexType idx) const { return traff[idx]; }
uint64_t & operator[](IndexType idx) { return traff[idx]; }
IndexType size() const { return traff.size(); }
+ void Reset()
+ {
+ for (IndexType i = 0; i < traff.size(); ++i)
+ traff[i] = 0;
+ }
+
private:
ContainerType traff;
};
class DIR_TRAFF_RES
{
public:
+ typedef RESETABLE<uint64_t> value_type;
typedef RESETABLE<uint64_t> ValueType;
typedef std::vector<ValueType> ContainerType;
typedef ContainerType::size_type IndexType;
DIR_TRAFF_RES() : traff(DIR_NUM) {}
- DIR_TRAFF_RES(const DIR_TRAFF & ts)
+ explicit DIR_TRAFF_RES(const DIR_TRAFF & ts)
: traff(ts.size())
{
for (IndexType i = 0; i < ts.size(); ++i)
traff[i] = ts[i];
}
+ DIR_TRAFF_RES & operator=(const DIR_TRAFF & ts)
+ {
+ for (IndexType i = 0; i < ts.size(); ++i)
+ traff[i] = ts[i];
+ return *this;
+ }
const ValueType & operator[](IndexType idx) const { return traff[idx]; }
ValueType & operator[](IndexType idx) { return traff[idx]; }
+ IndexType size() const { return traff.size(); }
+ DIR_TRAFF GetData() const
+ {
+ DIR_TRAFF res;
+ for (IndexType i = 0; i < traff.size(); ++i)
+ if (!traff[i].empty())
+ res[i] = traff[i].data();
+ return res;
+ }
private:
ContainerType traff;