Re-add try catch for getting status func.

This commit is contained in:
LollipopKit
2021-10-28 09:55:16 +08:00
parent 2dbb1a1857
commit 10a745d25a
3 changed files with 50 additions and 35 deletions

View File

@@ -35,11 +35,6 @@ class ServerStatus {
late List<DiskInfo?> disk;
late TcpStatus tcp;
ServerStatus(
this.cpu2Status,
this.memList,
this.sysVer,
this.uptime,
this.disk,
this.tcp);
ServerStatus(this.cpu2Status, this.memList, this.sysVer, this.uptime,
this.disk, this.tcp);
}

View File

@@ -73,15 +73,18 @@ class ServerProvider extends BusyProvider {
}
return;
}
await Future.wait(_servers.map((s) async {
final idx = _servers.indexOf(s);
final status = await _getData(s.info, idx);
if (status != null) {
_servers[idx].status = status;
notifyListeners();
}
}));
try {
await Future.wait(_servers.map((s) async {
final idx = _servers.indexOf(s);
final status = await _getData(s.info, idx);
if (status != null) {
_servers[idx].status = status;
notifyListeners();
}
}));
} catch (e) {
rethrow;
}
}
Future<void> startAutoRefresh() async {
@@ -136,21 +139,27 @@ class ServerProvider extends BusyProvider {
logger.warning(e);
}
}
try {
final cpu = await client.execute("cat /proc/stat | grep cpu") ?? '';
final mem = await client.execute('free -m') ?? '';
final sysVer = await client.execute('cat /etc/issue.net') ?? '';
final upTime = await client.execute('uptime') ?? '';
final disk = await client.execute('df -h') ?? '';
final tcp = await client.execute('cat /proc/net/snmp') ?? '';
final cpu = await client.execute("cat /proc/stat | grep cpu") ?? '';
final mem = await client.execute('free -m') ?? '';
final sysVer = await client.execute('cat /etc/issue.net') ?? '';
final upTime = await client.execute('uptime') ?? '';
final disk = await client.execute('df -h') ?? '';
final tcp = await client.execute('cat /proc/net/snmp') ?? '';
return ServerStatus(
_getCPU(cpu, _servers[idx].status.cpu2Status),
_getMem(mem),
sysVer.trim(),
_getUpTime(upTime),
_getDisk(disk),
_getTcp(tcp));
return ServerStatus(
_getCPU(cpu, _servers[idx].status.cpu2Status),
_getMem(mem),
sysVer.trim(),
_getUpTime(upTime),
_getDisk(disk),
_getTcp(tcp));
} catch (e) {
_servers[idx].connectionState = ServerConnectionState.failed;
notifyListeners();
logger.warning(e);
return null;
}
}
Cpu2Status _getCPU(String raw, Cpu2Status old) {

View File

@@ -14,6 +14,14 @@ class ServerDetailPage extends StatefulWidget {
}
class _ServerDetailPageState extends State<ServerDetailPage> {
late MediaQueryData _media;
@override
void didChangeDependencies() {
super.didChangeDependencies();
_media = MediaQuery.of(context);
}
@override
Widget build(BuildContext context) {
return Consumer<ServerProvider>(builder: (_, provider, __) {
@@ -34,11 +42,14 @@ class _ServerDetailPageState extends State<ServerDetailPage> {
}
Widget _buildCPUView(ServerStatus ss) {
return ListView.builder(
itemBuilder: (ctx, idx) {
return Text('$idx ${ss.cpu2Status.usedPercent(coreIdx: idx)}');
},
itemCount: ss.cpu2Status.now.length,
return ConstrainedBox(
constraints: BoxConstraints(maxHeight: _media.size.height * 0.3),
child: ListView.builder(
itemBuilder: (ctx, idx) {
return Text('$idx ${ss.cpu2Status.usedPercent(coreIdx: idx)}');
},
itemCount: ss.cpu2Status.now.length,
),
);
}