|
@@ -32,8 +32,8 @@ class VpnService {
|
|
|
|
|
|
|
|
final _rpcDio = Dio();
|
|
final _rpcDio = Dio();
|
|
|
|
|
|
|
|
- ConnectionState _status = ConnectionState.disconnected;
|
|
|
|
|
- final _ecStatus = StreamController<(ConnectionState, dynamic)>.broadcast();
|
|
|
|
|
|
|
+ VpnStatus _status = VpnStatus.idle;
|
|
|
|
|
+ final _ecStatus = StreamController<(VpnStatus, dynamic)>.broadcast();
|
|
|
|
|
|
|
|
bool _isOnline = false;
|
|
bool _isOnline = false;
|
|
|
final _ecOnline = StreamController<bool>.broadcast();
|
|
final _ecOnline = StreamController<bool>.broadcast();
|
|
@@ -50,7 +50,7 @@ class VpnService {
|
|
|
|
|
|
|
|
Map<String, dynamic>? _connectionParams;
|
|
Map<String, dynamic>? _connectionParams;
|
|
|
|
|
|
|
|
- void _setStatus(ConnectionState value, dynamic data) {
|
|
|
|
|
|
|
+ void _setStatus(VpnStatus value, dynamic data) {
|
|
|
if (_status != value) {
|
|
if (_status != value) {
|
|
|
_status = value;
|
|
_status = value;
|
|
|
_ecStatus.add((_status, data));
|
|
_ecStatus.add((_status, data));
|
|
@@ -178,13 +178,13 @@ class VpnService {
|
|
|
_connectionParams = null;
|
|
_connectionParams = null;
|
|
|
|
|
|
|
|
// 通知正在连接
|
|
// 通知正在连接
|
|
|
- _setStatus(ConnectionState.connecting, params);
|
|
|
|
|
|
|
+ _setStatus(VpnStatus.connecting, params);
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
final result = await _rpcPost('connect', params);
|
|
final result = await _rpcPost('connect', params);
|
|
|
if (!result.success) {
|
|
if (!result.success) {
|
|
|
log(_tag, 'start call error: ${result.message}');
|
|
log(_tag, 'start call error: ${result.message}');
|
|
|
- _setStatus(ConnectionState.error, Errors.ERROR_RPC_RETURN_FALSE);
|
|
|
|
|
|
|
+ _setStatus(VpnStatus.error, Errors.ERROR_RPC_RETURN_FALSE);
|
|
|
} else {
|
|
} else {
|
|
|
_connectionParams = params;
|
|
_connectionParams = params;
|
|
|
log(_tag, 'start call success.');
|
|
log(_tag, 'start call success.');
|
|
@@ -192,7 +192,7 @@ class VpnService {
|
|
|
} catch (e, stack) {
|
|
} catch (e, stack) {
|
|
|
log(_tag, 'start call exception: $e\nStack: $stack');
|
|
log(_tag, 'start call exception: $e\nStack: $stack');
|
|
|
// 通知连接失败
|
|
// 通知连接失败
|
|
|
- _setStatus(ConnectionState.error, Errors.ERROR_RPC_CALL_FAILED);
|
|
|
|
|
|
|
+ _setStatus(VpnStatus.error, Errors.ERROR_RPC_CALL_FAILED);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -284,8 +284,8 @@ class VpnService {
|
|
|
_setIsOnline(true);
|
|
_setIsOnline(true);
|
|
|
// 保存重连状态
|
|
// 保存重连状态
|
|
|
try {
|
|
try {
|
|
|
- if (_status == ConnectionState.connected ||
|
|
|
|
|
- _status == ConnectionState.connecting) {
|
|
|
|
|
|
|
+ if (_status == VpnStatus.connected ||
|
|
|
|
|
+ _status == VpnStatus.connecting) {
|
|
|
_needRecoverConnection = true;
|
|
_needRecoverConnection = true;
|
|
|
}
|
|
}
|
|
|
} catch (e, stack) {
|
|
} catch (e, stack) {
|
|
@@ -300,15 +300,15 @@ class VpnService {
|
|
|
);
|
|
);
|
|
|
break;
|
|
break;
|
|
|
case VpnMessageType.stateSync:
|
|
case VpnMessageType.stateSync:
|
|
|
- log(_tag, 'stateSync message got');
|
|
|
|
|
try {
|
|
try {
|
|
|
final data = vpnMessage.data;
|
|
final data = vpnMessage.data;
|
|
|
|
|
+ log(_tag, 'stateSync message got: ${vpnMessage.data}');
|
|
|
if (data == null) {
|
|
if (data == null) {
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
final int state = data['state'] as int;
|
|
final int state = data['state'] as int;
|
|
|
final dynamic param = data['param'];
|
|
final dynamic param = data['param'];
|
|
|
- _setStatus(ConnectionState.values[state], param);
|
|
|
|
|
|
|
+ _setStatus(VpnStatus.values[state], param);
|
|
|
|
|
|
|
|
// 恢复连接
|
|
// 恢复连接
|
|
|
if (_needRecoverConnection) {
|
|
if (_needRecoverConnection) {
|
|
@@ -392,7 +392,7 @@ class VpnService {
|
|
|
|
|
|
|
|
_isStarted = false;
|
|
_isStarted = false;
|
|
|
_needRecoverConnection = false;
|
|
_needRecoverConnection = false;
|
|
|
- _setStatus(ConnectionState.disconnected, null);
|
|
|
|
|
|
|
+ _setStatus(VpnStatus.idle, null);
|
|
|
log(_tag, 'shutdown finished. _isStarted: $_isStarted');
|
|
log(_tag, 'shutdown finished. _isStarted: $_isStarted');
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -437,9 +437,9 @@ class VpnService {
|
|
|
|
|
|
|
|
bool get isOnline => _isOnline;
|
|
bool get isOnline => _isOnline;
|
|
|
|
|
|
|
|
- ConnectionState get status => _status;
|
|
|
|
|
|
|
+ VpnStatus get status => _status;
|
|
|
|
|
|
|
|
Stream<bool> get onOnlineChanged => _ecOnline.stream;
|
|
Stream<bool> get onOnlineChanged => _ecOnline.stream;
|
|
|
|
|
|
|
|
- Stream<(ConnectionState, dynamic)> get onStatusChanged => _ecStatus.stream;
|
|
|
|
|
|
|
+ Stream<(VpnStatus, dynamic)> get onStatusChanged => _ecStatus.stream;
|
|
|
}
|
|
}
|