init method
Future<void>
init(
{ - bool reconnectIfStopped = true,
})
Implementation
Future<void> init({bool reconnectIfStopped = true}) async {
Tailscale.init(stateDir: await _stateDir);
final status = await _engine.status();
_updateState(status.state);
_engineStateSubscription?.cancel();
_engineStateSubscription = _engine.onStateChange.listen((state) {
final prevState = _state;
logger.log('Tailscale status change from $prevState->$state');
_updateState(state);
final disconnected =
state == NodeState.stopped || state == NodeState.noState;
if (prevState == NodeState.running && disconnected && !_disconnecting) {
unawaited(disconnect());
}
});
final clientId = await _clientId.read();
await _peerPublicKey.read();
if (clientId == null) {
await _clientId.write(generateClientId());
}
for (final client in subclients) {
await client.init();
}
if (reconnectIfStopped && state == NodeState.stopped) {
await connect();
}
}