new: swap view for #10

This commit is contained in:
lollipopkit
2023-02-16 12:19:38 +08:00
parent 9c3b822311
commit 28a6067033
14 changed files with 228 additions and 47 deletions

View File

@@ -16,18 +16,65 @@ final memItemReg = RegExp(r'([A-Z].+:)\s+([0-9]+) kB');
Memory parseMem(String raw) {
final items = raw.split('\n').map((e) => memItemReg.firstMatch(e)).toList();
final total = int.parse(
items.firstWhere((e) => e?.group(1) == 'MemTotal:')?.group(2) ?? '1');
items.firstWhere((e) => e?.group(1) == 'MemTotal:')?.group(2) ?? '1',
);
final free = int.parse(
items.firstWhere((e) => e?.group(1) == 'MemFree:')?.group(2) ?? '0');
items.firstWhere((e) => e?.group(1) == 'MemFree:')?.group(2) ?? '0',
);
final cached = int.parse(
items.firstWhere((e) => e?.group(1) == 'Cached:')?.group(2) ?? '0');
items.firstWhere((e) => e?.group(1) == 'Cached:')?.group(2) ?? '0',
);
final available = int.parse(
items.firstWhere((e) => e?.group(1) == 'MemAvailable:')?.group(2) ?? '0');
items.firstWhere((e) => e?.group(1) == 'MemAvailable:')?.group(2) ?? '0',
);
return Memory(
total: total,
used: total - available,
free: free,
cache: cached,
avail: available);
total: total,
used: total - available,
free: free,
cache: cached,
avail: available,
);
}
class Swap {
final int total;
final int used;
final int free;
final int cached;
Swap({
required this.total,
required this.used,
required this.free,
required this.cached,
});
@override
String toString() {
return 'Swap{total: $total, used: $used, free: $free, cached: $cached}';
}
}
Swap parseSwap(String raw) {
final items = raw.split('\n').map((e) => memItemReg.firstMatch(e)).toList();
final total = int.parse(
items.firstWhere((e) => e?.group(1) == 'SwapTotal:')?.group(2) ?? '1',
);
final free = int.parse(
items.firstWhere((e) => e?.group(1) == 'SwapFree:')?.group(2) ?? '0',
);
final cached = int.parse(
items.firstWhere((e) => e?.group(1) == 'SwapCached:')?.group(2) ?? '0',
);
return Swap(
total: total,
used: total - free,
free: free,
cached: cached,
);
}

View File

@@ -32,6 +32,7 @@ class ServerStatus {
CpuStatus cpu;
Memory mem;
Swap swap;
String sysVer;
String uptime;
List<DiskInfo> disk;
@@ -39,7 +40,15 @@ class ServerStatus {
NetSpeed netSpeed;
String? failedInfo;
ServerStatus(this.cpu, this.mem, this.sysVer, this.uptime, this.disk,
this.tcp, this.netSpeed,
{this.failedInfo});
ServerStatus({
required this.cpu,
required this.mem,
required this.sysVer,
required this.uptime,
required this.disk,
required this.tcp,
required this.netSpeed,
required this.swap,
this.failedInfo,
});
}

View File

@@ -241,7 +241,9 @@ class ServerProvider extends BusyProvider {
}
Future<void> _getMem(String id, String raw) async {
getServer(id).status.mem = await compute(parseMem, raw);
final s = getServer(id);
s.status.mem = await compute(parseMem, raw);
s.status.swap = await compute(parseSwap, raw);
}
Future<String?> runSnippet(String id, Snippet snippet) async {

View File

@@ -2,9 +2,9 @@
class BuildData {
static const String name = "ServerBox";
static const int build = 217;
static const int build = 218;
static const String engine =
"Flutter 3.7.2 • channel stable • https://github.com/flutter/flutter.git\nFramework • revision 32fb2f948e (5 days ago) • 2023-02-08 07:30:10 -0800\nEngine • revision f40b73f8a4\nTools • Dart 2.19.2 • DevTools 2.20.1\n";
static const String buildAt = "2023-02-13 14:53:15.900258";
static const int modifications = 2;
"Flutter 3.7.3 • channel stable • https://github.com/flutter/flutter.git\nFramework • revision 9944297138 (5 days ago) • 2023-02-08 15:46:04 -0800\nEngine • revision 248290d6d5\nTools • Dart 2.19.2 • DevTools 2.20.1\n";
static const String buildAt = "2023-02-14 18:46:55.180156";
static const int modifications = 5;
}

View File

@@ -37,12 +37,19 @@ get initNetSpeed => NetSpeed(
[_initNetSpeedPart],
[_initNetSpeedPart],
);
get initStatus => ServerStatus(
initCpuStatus,
_initMemory,
'Loading...',
'',
[DiskInfo('/', '/', 0, '0', '0', '0')],
TcpStatus(0, 0, 0, 0),
initNetSpeed,
get _initSwap => Swap(
total: 1,
used: 0,
free: 1,
cached: 0,
);
get initStatus => ServerStatus(
cpu: initCpuStatus,
mem: _initMemory,
sysVer: 'Loading...',
uptime: '',
disk: [DiskInfo('/', '/', 0, '0', '0', '0')],
tcp: TcpStatus(0, 0, 0, 0),
netSpeed: initNetSpeed,
swap: _initSwap,
);