asyncWithResource<T> method
Implementation
Future<T> asyncWithResource<T>(
List<Resource> resources,
Future<T> Function() onAccept,
Future<T> Function() onDeny,
) {
assert(resources.isNotEmpty);
var token = _lockResource(resources);
if (token == 0) {
return onDeny();
}
try {
final future = onAccept();
future.whenComplete(() => _unlockResource(token));
return future;
} catch (e) {
Alog.e(
tag: _tag,
moduleName: _moduleName,
content: 'InvocationManager#asyncWithResource error $e');
_unlockResource(token);
rethrow;
}
}