summaryrefslogtreecommitdiff
path: root/def.go
diff options
context:
space:
mode:
Diffstat (limited to 'def.go')
-rw-r--r--def.go66
1 files changed, 66 insertions, 0 deletions
diff --git a/def.go b/def.go
new file mode 100644
index 0000000..e9951ad
--- /dev/null
+++ b/def.go
@@ -0,0 +1,66 @@
+package v2stat
+
+import (
+ "strings"
+)
+
+type TrafficDirection int
+
+const (
+ DirectionDownlink TrafficDirection = iota
+ DirectionUplink
+)
+
+type ConnectionType int
+
+const (
+ ConnTypeUser ConnectionType = iota
+ ConnTypeInbound
+ ConnTypeOutbound
+)
+
+type ConnInfo struct {
+ Type ConnectionType `json:"type"`
+ Name string `json:"name"`
+}
+
+type TrafficStat struct {
+ Time string `json:"time"`
+ Downlink int64 `json:"downlink"`
+ Uplink int64 `json:"uplink"`
+}
+
+func (ci *ConnInfo) String() string {
+ switch ci.Type {
+ case ConnTypeUser:
+ return "user:" + ci.Name
+ case ConnTypeInbound:
+ return "inbound:" + ci.Name
+ case ConnTypeOutbound:
+ return "outbound:" + ci.Name
+ default:
+ return "unknown:" + ci.Name
+ }
+}
+
+func ParseConnInfo(s string) (ConnInfo, bool) {
+ parts := strings.Split(s, ":")
+ if len(parts) != 2 {
+ return ConnInfo{}, false
+ }
+ var connType ConnectionType
+ switch parts[0] {
+ case "user":
+ connType = ConnTypeUser
+ case "inbound":
+ connType = ConnTypeInbound
+ case "outbound":
+ connType = ConnTypeOutbound
+ default:
+ return ConnInfo{}, false
+ }
+ return ConnInfo{
+ Type: connType,
+ Name: parts[1],
+ }, true
+} \ No newline at end of file