forked from simonw/bandwidther
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModels.swift
More file actions
76 lines (63 loc) · 1.68 KB
/
Models.swift
File metadata and controls
76 lines (63 loc) · 1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import Foundation
struct BandwidthRate {
let bytesInPerSec: Double
let bytesOutPerSec: Double
var totalPerSec: Double { bytesInPerSec + bytesOutPerSec }
static let zero = BandwidthRate(bytesInPerSec: 0, bytesOutPerSec: 0)
}
struct ProcessBandwidth: Identifiable {
let id: String
let name: String
let bytesInPerSec: Double
let bytesOutPerSec: Double
let totalBytesIn: UInt64
let totalBytesOut: UInt64
let connections: Int
var totalPerSec: Double { bytesInPerSec + bytesOutPerSec }
var totalBytes: UInt64 { totalBytesIn + totalBytesOut }
}
enum ProcessSortKey: String, CaseIterable {
case totalRate = "Rate"
case download = "Down"
case upload = "Up"
case totalBytes = "Total"
case name = "Name"
}
enum DNSResult {
case resolved(String)
case failed
}
struct ConnectionSummary {
var internetCount: Int = 0
var lanCount: Int = 0
var internetProcesses: [String: Int] = [:]
var lanProcesses: [String: Int] = [:]
var internetDestinations: Set<String> = []
var lanDestinations: Set<String> = []
}
struct NetworkEndpoint {
let host: String
let port: String
var displayString: String {
if host.contains(":") {
return "[\(host)]:\(port)"
}
return "\(host):\(port)"
}
}
struct NettopProcessData {
var bytesIn: UInt64 = 0
var bytesOut: UInt64 = 0
var pids: Set<String> = []
}
struct NettopResult {
var totals: [String: NettopProcessData] = [:]
var deltas: [String: NettopProcessData] = [:]
var errorMessage: String?
}
enum AppConstants {
static let nettopRefreshInterval: TimeInterval = 3.0
static let connectionRefreshInterval: TimeInterval = 5.0
static let maxRateHistory = 60
static let maxDisplayedDestinations = 20
}