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 List<DiskInfo?> disk;
late TcpStatus tcp; late TcpStatus tcp;
ServerStatus( ServerStatus(this.cpu2Status, this.memList, this.sysVer, this.uptime,
this.cpu2Status, this.disk, this.tcp);
this.memList,
this.sysVer,
this.uptime,
this.disk,
this.tcp);
} }

View File

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

View File

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