]> git.stg.codes - stg.git/blobdiff - include/stg/user_traff.h
Merge remote-tracking branch 'origin/stg-2.409' into ticket37
[stg.git] / include / stg / user_traff.h
index 133cb54c9fca665877baf49855cf7bcbf955a799..eec4627669f6c8e8ee47797a695a1f0d3caf6304 100644 (file)
 #ifndef USER_TRAFF_H
 #define USER_TRAFF_H
 
 #ifndef USER_TRAFF_H
 #define USER_TRAFF_H
 
-#include <iostream>
-#include <vector>
-
+#include "resetable.h"
 #include "const.h"
 #include "os_int.h"
 
 #include "const.h"
 #include "os_int.h"
 
+#include <iostream>
+#include <vector>
+
 enum TRAFF_DIRECTION {TRAFF_UPLOAD, TRAFF_DOWNLOAD};
 
 class DIR_TRAFF
 enum TRAFF_DIRECTION {TRAFF_UPLOAD, TRAFF_DOWNLOAD};
 
 class DIR_TRAFF
@@ -50,6 +51,12 @@ public:
     uint64_t & operator[](IndexType idx) { return traff[idx]; }
     IndexType size() const { return traff.size(); }
 
     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;
 };
 private:
     ContainerType traff;
 };
@@ -86,6 +93,14 @@ public:
     }
     const ValueType & operator[](IndexType idx) const { return traff[idx]; }
     ValueType & operator[](IndexType idx) { return traff[idx]; }
     }
     const ValueType & operator[](IndexType idx) const { return traff[idx]; }
     ValueType & operator[](IndexType idx) { return traff[idx]; }
+    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;
 
 private:
     ContainerType traff;