#74 probably fix

This commit is contained in:
lollipopkit
2023-07-21 16:56:50 +08:00
parent 262b4486e4
commit eef38f0949
14 changed files with 128 additions and 29 deletions

View File

@@ -1,4 +1,5 @@
import 'package:hive_flutter/hive_flutter.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:toolbox/data/model/server/server_status.dart';
part 'net_view.g.dart';
@@ -6,15 +7,26 @@ part 'net_view.g.dart';
@HiveType(typeId: 5)
enum NetViewType {
@HiveField(0)
count,
conn,
@HiveField(1)
speed,
@HiveField(2)
size;
traffic;
String l10n(S s) {
switch (this) {
case NetViewType.conn:
return s.conn;
case NetViewType.traffic:
return s.traffic;
case NetViewType.speed:
return s.speed;
}
}
NetViewData build(ServerStatus ss) {
switch (this) {
case NetViewType.count:
case NetViewType.conn:
return NetViewData(
'Conn:\n${ss.tcp.maxConn}',
'Fail:\n${ss.tcp.fail}',
@@ -24,7 +36,7 @@ enum NetViewType {
'In:\n${ss.netSpeed.speedIn(all: true)}',
'Out:\n${ss.netSpeed.speedOut(all: true)}',
);
case NetViewType.size:
case NetViewType.traffic:
return NetViewData(
'In:\n${ss.netSpeed.sizeIn(all: true)}',
'Out:\n${ss.netSpeed.sizeOut(all: true)}',

View File

@@ -14,26 +14,26 @@ class NetViewTypeAdapter extends TypeAdapter<NetViewType> {
NetViewType read(BinaryReader reader) {
switch (reader.readByte()) {
case 0:
return NetViewType.count;
return NetViewType.conn;
case 1:
return NetViewType.speed;
case 2:
return NetViewType.size;
return NetViewType.traffic;
default:
return NetViewType.count;
return NetViewType.conn;
}
}
@override
void write(BinaryWriter writer, NetViewType obj) {
switch (obj) {
case NetViewType.count:
case NetViewType.conn:
writer.writeByte(0);
break;
case NetViewType.speed:
writer.writeByte(1);
break;
case NetViewType.size:
case NetViewType.traffic:
writer.writeByte(2);
break;
}

View File

@@ -14,6 +14,15 @@ class Cpus {
void update(List<OneTimeCpuStatus> newStatus) {
_pre = _now;
_now = newStatus;
// 类似 [NetSpeed.update] 的处理
// 虽然CPU热插拔情况较少...
if (_pre.length != _now.length) {
if (_pre.length > _now.length) {
_pre = _pre.sublist(0, _now.length);
} else {
_pre.addAll(_now.sublist(_pre.length, _now.length));
}
}
}
int get coresCount => _now.length;

View File

@@ -24,6 +24,18 @@ class NetSpeed {
void update(List<NetSpeedPart> newOne) {
_old = _now;
_now = newOne;
// 当长度不同,说明有网络接口改变
//
// 应当跟随改变:
// 旧长度 > 新长度:将旧的数据截断
// 旧长度 < 新长度:将旧的数据补齐
if (_old.length != _now.length) {
if (_old.length > _now.length) {
_old = _old.sublist(0, _now.length);
} else {
_old.addAll(_now.sublist(_old.length, _now.length));
}
}
}
BigInt get timeDiff => _now[0].time - _old[0].time;