#163 #176 #184 opt.: wrap with try-catch

This commit is contained in:
lollipopkit
2023-10-12 13:12:19 +08:00
parent 7148015037
commit a43a000c68
2 changed files with 103 additions and 47 deletions

View File

@@ -122,8 +122,8 @@ fi''';
export LANG=en_US.UTF-8 export LANG=en_US.UTF-8
# If macSign & bsdSign are both empty, then it's linux # If macSign & bsdSign are both empty, then it's linux
macSign=\$(uname 2>&1 | grep "Darwin") macSign=\$(uname -a 2>&1 | grep "Darwin")
bsdSign=\$(uname 2>&1 | grep "BSD") bsdSign=\$(uname -a 2>&1 | grep "BSD")
# Link /bin/sh to busybox? # Link /bin/sh to busybox?
isBusybox=\$(ls -l /bin/sh | grep "busybox") isBusybox=\$(ls -l /bin/sh | grep "busybox")

View File

@@ -1,4 +1,5 @@
import 'package:toolbox/data/model/server/system.dart'; import 'package:toolbox/data/model/server/system.dart';
import 'package:toolbox/data/res/logger.dart';
import '../app/shell_func.dart'; import '../app/shell_func.dart';
import 'cpu.dart'; import 'cpu.dart';
@@ -29,69 +30,124 @@ Future<ServerStatus> getStatus(ServerStatusUpdateReq req) async {
} }
} }
// Wrap each operation with a try-catch, so that if one operation fails,
// the following operations can still be executed.
Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async { Future<ServerStatus> _getLinuxStatus(ServerStatusUpdateReq req) async {
final segments = req.segments; final segments = req.segments;
final time = int.parse(StatusCmdType.time.find(segments)); try {
final time = int.parse(StatusCmdType.time.find(segments));
final net = parseNetSpeed(StatusCmdType.net.find(segments), time); final net = parseNetSpeed(StatusCmdType.net.find(segments), time);
req.ss.netSpeed.update(net); req.ss.netSpeed.update(net);
} catch (e, s) {
final sys = _parseSysVer( Loggers.parse.warning(e, s);
StatusCmdType.sys.find(segments),
StatusCmdType.host.find(segments),
);
if (sys != null) {
req.ss.sysVer = sys;
} }
final cpus = parseCPU(StatusCmdType.cpu.find(segments)); try {
req.ss.cpu.update(cpus); final sys = _parseSysVer(
StatusCmdType.sys.find(segments),
req.ss.temps.parse( StatusCmdType.host.find(segments),
StatusCmdType.tempType.find(segments), );
StatusCmdType.tempVal.find(segments), if (sys != null) {
); req.ss.sysVer = sys;
}
final tcp = parseConn(StatusCmdType.conn.find(segments)); } catch (e, s) {
if (tcp != null) { Loggers.parse.warning(e, s);
req.ss.tcp = tcp;
} }
req.ss.disk = parseDisk(StatusCmdType.disk.find(segments)); try {
final cpus = parseCPU(StatusCmdType.cpu.find(segments));
req.ss.mem = parseMem(StatusCmdType.mem.find(segments)); req.ss.cpu.update(cpus);
req.ss.temps.parse(
final uptime = _parseUpTime(StatusCmdType.uptime.find(segments)); StatusCmdType.tempType.find(segments),
if (uptime != null) { StatusCmdType.tempVal.find(segments),
req.ss.uptime = uptime; );
} catch (e, s) {
Loggers.parse.warning(e, s);
} }
req.ss.swap = parseSwap(StatusCmdType.mem.find(segments)); try {
final tcp = parseConn(StatusCmdType.conn.find(segments));
if (tcp != null) {
req.ss.tcp = tcp;
}
} catch (e, s) {
Loggers.parse.warning(e, s);
}
try {
req.ss.disk = parseDisk(StatusCmdType.disk.find(segments));
} catch (e, s) {
Loggers.parse.warning(e, s);
}
try {
req.ss.mem = parseMem(StatusCmdType.mem.find(segments));
} catch (e, s) {
Loggers.parse.warning(e, s);
}
try {
final uptime = _parseUpTime(StatusCmdType.uptime.find(segments));
if (uptime != null) {
req.ss.uptime = uptime;
}
} catch (e, s) {
Loggers.parse.warning(e, s);
}
try {
req.ss.swap = parseSwap(StatusCmdType.mem.find(segments));
} catch (e, s) {
Loggers.parse.warning(e, s);
}
return req.ss; return req.ss;
} }
// Same as above, wrap with try-catch
Future<ServerStatus> _getBsdStatus(ServerStatusUpdateReq req) async { Future<ServerStatus> _getBsdStatus(ServerStatusUpdateReq req) async {
final segments = req.segments; final segments = req.segments;
final time = int.parse(BSDStatusCmdType.time.find(segments)); try {
final time = int.parse(BSDStatusCmdType.time.find(segments));
final net = parseBsdNetSpeed(BSDStatusCmdType.net.find(segments), time); final net = parseBsdNetSpeed(BSDStatusCmdType.net.find(segments), time);
req.ss.netSpeed.update(net); req.ss.netSpeed.update(net);
} catch (e, s) {
req.ss.sysVer = BSDStatusCmdType.sys.find(segments); Loggers.parse.warning(e, s);
req.ss.cpu = parseBsdCpu(BSDStatusCmdType.cpu.find(segments));
//req.ss.mem = parseBsdMem(BSDStatusCmdType.mem.find(segments));
final uptime = _parseUpTime(BSDStatusCmdType.uptime.find(segments));
if (uptime != null) {
req.ss.uptime = uptime;
} }
req.ss.disk = parseDisk(BSDStatusCmdType.disk.find(segments)); try {
req.ss.sysVer = BSDStatusCmdType.sys.find(segments);
} catch (e, s) {
Loggers.parse.warning(e, s);
}
try {
req.ss.cpu = parseBsdCpu(BSDStatusCmdType.cpu.find(segments));
} catch (e, s) {
Loggers.parse.warning(e, s);
}
// try {
// req.ss.mem = parseBsdMem(BSDStatusCmdType.mem.find(segments));
// } catch (e, s) {
// Loggers.parse.warning(e, s);
// }
try {
final uptime = _parseUpTime(BSDStatusCmdType.uptime.find(segments));
if (uptime != null) {
req.ss.uptime = uptime;
}
} catch (e, s) {
Loggers.parse.warning(e, s);
}
try {
req.ss.disk = parseDisk(BSDStatusCmdType.disk.find(segments));
} catch (e, s) {
Loggers.parse.warning(e, s);
}
return req.ss; return req.ss;
} }