lint cleanup

This commit is contained in:
Christien Rioux 2023-07-26 15:30:00 -04:00
parent d49c631fac
commit a589dbf100
2 changed files with 318 additions and 307 deletions

View File

@ -226,203 +226,198 @@ const int messageStreamClose = 8;
Veilid getVeilid() => VeilidFFI(_dylib);
// Parse handle async returns
Future<T> processFuturePlain<T>(Future<dynamic> future) async => future.then((value) {
final list = value as List<dynamic>;
switch (list[0] as int) {
case messageOk:
{
if (list[1] == null && null is! T) {
throw const VeilidAPIExceptionInternal(
'Null MESSAGE_OK value on non-nullable type');
Future<T> processFuturePlain<T>(Future<dynamic> future) async =>
future.then((value) {
final list = value as List<dynamic>;
switch (list[0] as int) {
case messageOk:
{
if (list[1] == null && null is! T) {
throw const VeilidAPIExceptionInternal(
'Null MESSAGE_OK value on non-nullable type');
}
return list[1] as T;
}
return list[1] as T;
}
case messageErr:
{
throw VeilidAPIExceptionInternal('Internal API Error: ${list[1]}');
}
case messageErrJson:
{
throw VeilidAPIException.fromJson(jsonDecode(list[1]));
}
default:
{
throw VeilidAPIExceptionInternal(
'Unexpected async return message type: ${list[0]}');
}
}
}).catchError((e) {
// Wrap all other errors in VeilidAPIExceptionInternal
throw VeilidAPIExceptionInternal(e.toString());
}, test: (e) {
// Pass errors that are already VeilidAPIException through without wrapping
return e is! VeilidAPIException;
});
case messageErr:
{
throw VeilidAPIExceptionInternal('Internal API Error: ${list[1]}');
}
case messageErrJson:
{
throw VeilidAPIException.fromJson(jsonDecode(list[1] as String));
}
default:
{
throw VeilidAPIExceptionInternal(
'Unexpected async return message type: ${list[0]}');
}
}
// ignore: inference_failure_on_untyped_parameter
}).catchError((e) {
// Wrap all other errors in VeilidAPIExceptionInternal
throw VeilidAPIExceptionInternal(e.toString());
}, test: (e) => e is! VeilidAPIException);
Future<T> processFutureJson<T>(
T Function(dynamic) jsonConstructor, Future<dynamic> future) async => future.then((value) {
final list = value as List<dynamic>;
switch (list[0] as int) {
case messageErr:
{
throw VeilidAPIExceptionInternal('Internal API Error: ${list[1]}');
}
case messageOkJson:
{
if (list[1] is! String) {
throw const VeilidAPIExceptionInternal(
'Non-string MESSAGE_OK_JSON value');
T Function(dynamic) jsonConstructor, Future<dynamic> future) async =>
future.then((value) {
final list = value as List<dynamic>;
switch (list[0] as int) {
case messageErr:
{
throw VeilidAPIExceptionInternal('Internal API Error: ${list[1]}');
}
final ret = jsonDecode(list[1] as String);
if (ret == null) {
throw const VeilidAPIExceptionInternal(
'Null JSON object on non nullable type');
case messageOkJson:
{
if (list[1] is! String) {
throw const VeilidAPIExceptionInternal(
'Non-string MESSAGE_OK_JSON value');
}
final ret = jsonDecode(list[1] as String);
if (ret == null) {
throw const VeilidAPIExceptionInternal(
'Null JSON object on non nullable type');
}
return jsonConstructor(ret);
}
return jsonConstructor(ret);
}
case messageErrJson:
{
throw VeilidAPIException.fromJson(jsonDecode(list[1]));
}
default:
{
throw VeilidAPIExceptionInternal(
'Unexpected async return message type: ${list[0]}');
}
}
}).catchError((e) {
// Wrap all other errors in VeilidAPIExceptionInternal
throw VeilidAPIExceptionInternal(e.toString());
}, test: (e) {
// Pass errors that are already VeilidAPIException through without wrapping
return e is! VeilidAPIException;
});
case messageErrJson:
{
throw VeilidAPIException.fromJson(jsonDecode(list[1] as String));
}
default:
{
throw VeilidAPIExceptionInternal(
'Unexpected async return message type: ${list[0]}');
}
}
// ignore: inference_failure_on_untyped_parameter
}).catchError((e) {
// Wrap all other errors in VeilidAPIExceptionInternal
throw VeilidAPIExceptionInternal(e.toString());
}, test: (e) => e is! VeilidAPIException);
Future<T?> processFutureOptJson<T>(
T Function(dynamic) jsonConstructor, Future<dynamic> future) async => future.then((value) {
final list = value as List<dynamic>;
switch (list[0] as int) {
case messageErr:
{
throw VeilidAPIExceptionInternal('Internal API Error: ${list[1]}');
}
case messageOkJson:
{
if (list[1] == null) {
return null;
T Function(dynamic) jsonConstructor, Future<dynamic> future) async =>
future.then((value) {
final list = value as List<dynamic>;
switch (list[0] as int) {
case messageErr:
{
throw VeilidAPIExceptionInternal('Internal API Error: ${list[1]}');
}
if (list[1] is! String) {
throw const VeilidAPIExceptionInternal(
'Non-string MESSAGE_OK_JSON optional value');
case messageOkJson:
{
if (list[1] == null) {
return null;
}
if (list[1] is! String) {
throw const VeilidAPIExceptionInternal(
'Non-string MESSAGE_OK_JSON optional value');
}
final ret = jsonDecode(list[1] as String);
if (ret == null) {
return null;
}
return jsonConstructor(ret);
}
final ret = jsonDecode(list[1] as String);
if (ret == null) {
return null;
case messageErrJson:
{
throw VeilidAPIException.fromJson(jsonDecode(list[1] as String));
}
return jsonConstructor(ret);
}
case messageErrJson:
{
throw VeilidAPIException.fromJson(jsonDecode(list[1]));
}
default:
{
throw VeilidAPIExceptionInternal(
'Unexpected async return message type: ${list[0]}');
}
}
}).catchError((e) {
// Wrap all other errors in VeilidAPIExceptionInternal
throw VeilidAPIExceptionInternal(e.toString());
}, test: (e) {
// Pass errors that are already VeilidAPIException through without wrapping
return e is! VeilidAPIException;
});
default:
{
throw VeilidAPIExceptionInternal(
'Unexpected async return message type: ${list[0]}');
}
}
// ignore: inference_failure_on_untyped_parameter
}).catchError((e) {
// Wrap all other errors in VeilidAPIExceptionInternal
throw VeilidAPIExceptionInternal(e.toString());
}, test: (e) => e is! VeilidAPIException);
Future<void> processFutureVoid(Future<dynamic> future) async => future.then((value) {
final list = value as List<dynamic>;
switch (list[0] as int) {
case messageOk:
{
if (list[1] != null) {
throw VeilidAPIExceptionInternal(
"Unexpected MESSAGE_OK value '${list[1]}' where null expected");
Future<void> processFutureVoid(Future<dynamic> future) async =>
future.then((value) {
final list = value as List<dynamic>;
switch (list[0] as int) {
case messageOk:
{
if (list[1] != null) {
throw VeilidAPIExceptionInternal(
"Unexpected MESSAGE_OK value '${list[1]}' where null expected");
}
return;
}
return;
}
case messageErr:
{
throw VeilidAPIExceptionInternal('Internal API Error: ${list[1]}');
}
case messageOkJson:
{
final ret = jsonDecode(list[1] as String);
if (ret != null) {
throw VeilidAPIExceptionInternal(
"Unexpected MESSAGE_OK_JSON value '$ret' where null expected");
case messageErr:
{
throw VeilidAPIExceptionInternal('Internal API Error: ${list[1]}');
}
return;
}
case messageErrJson:
{
throw VeilidAPIException.fromJson(jsonDecode(list[1] as String));
}
default:
{
throw VeilidAPIExceptionInternal(
'Unexpected async return message type: ${list[0]}');
}
}
}).catchError((e) {
// Wrap all other errors in VeilidAPIExceptionInternal
throw VeilidAPIExceptionInternal(e.toString());
}, test: (e) {
// Pass errors that are already VeilidAPIException through without wrapping
return e is! VeilidAPIException;
});
case messageOkJson:
{
final ret = jsonDecode(list[1] as String);
if (ret != null) {
throw VeilidAPIExceptionInternal(
"Unexpected MESSAGE_OK_JSON value '$ret' where null expected");
}
return;
}
case messageErrJson:
{
throw VeilidAPIException.fromJson(jsonDecode(list[1] as String));
}
default:
{
throw VeilidAPIExceptionInternal(
'Unexpected async return message type: ${list[0]}');
}
}
// ignore: inference_failure_on_untyped_parameter
}).catchError((e) {
// Wrap all other errors in VeilidAPIExceptionInternal
throw VeilidAPIExceptionInternal(e.toString());
}, test: (e) => e is! VeilidAPIException);
Future<Stream<T>> processFutureStream<T>(
Stream<T> returnStream, Future<dynamic> future) async => future.then((value) {
final list = value as List<dynamic>;
switch (list[0] as int) {
case messageOk:
{
if (list[1] != null) {
throw VeilidAPIExceptionInternal(
"Unexpected MESSAGE_OK value '${list[1]}' where null expected");
Stream<T> returnStream, Future<dynamic> future) async =>
future.then((value) {
final list = value as List<dynamic>;
switch (list[0] as int) {
case messageOk:
{
if (list[1] != null) {
throw VeilidAPIExceptionInternal(
"Unexpected MESSAGE_OK value '${list[1]}' where null expected");
}
return returnStream;
}
return returnStream;
}
case messageErr:
{
throw VeilidAPIExceptionInternal('Internal API Error: ${list[1]}');
}
case messageOkJson:
{
final ret = jsonDecode(list[1] as String);
if (ret != null) {
throw VeilidAPIExceptionInternal(
"Unexpected MESSAGE_OK_JSON value '$ret' where null expected");
case messageErr:
{
throw VeilidAPIExceptionInternal('Internal API Error: ${list[1]}');
}
return returnStream;
}
case messageErrJson:
{
throw VeilidAPIException.fromJson(jsonDecode(list[1] as String));
}
default:
{
throw VeilidAPIExceptionInternal(
'Unexpected async return message type: ${list[0]}');
}
}
}).catchError((e) {
// Wrap all other errors in VeilidAPIExceptionInternal
throw VeilidAPIExceptionInternal(e.toString());
}, test: (e) {
// Pass errors that are already VeilidAPIException through without wrapping
return e is! VeilidAPIException;
});
case messageOkJson:
{
final ret = jsonDecode(list[1] as String);
if (ret != null) {
throw VeilidAPIExceptionInternal(
"Unexpected MESSAGE_OK_JSON value '$ret' where null expected");
}
return returnStream;
}
case messageErrJson:
{
throw VeilidAPIException.fromJson(jsonDecode(list[1] as String));
}
default:
{
throw VeilidAPIExceptionInternal(
'Unexpected async return message type: ${list[0]}');
}
}
// ignore: inference_failure_on_untyped_parameter
}).catchError((e) {
// Wrap all other errors in VeilidAPIExceptionInternal
throw VeilidAPIExceptionInternal(e.toString());
}, test: (e) => e is! VeilidAPIException);
Stream<T> processStreamJson<T>(
T Function(dynamic) jsonConstructor, ReceivePort port) async* {
@ -442,17 +437,14 @@ Stream<T> processStreamJson<T>(
}
case messageStreamAbort:
{
port.close();
throw VeilidAPIExceptionInternal('Internal API Error: ${list[1]}');
}
case messageStreamAbortJson:
{
port.close();
throw VeilidAPIException.fromJson(jsonDecode(list[1]));
throw VeilidAPIException.fromJson(jsonDecode(list[1] as String));
}
case messageStreamClose:
{
port.close();
break;
}
default:
@ -462,10 +454,13 @@ Stream<T> processStreamJson<T>(
}
}
}
} catch (e, s) {
} on VeilidAPIException catch (_) {
rethrow;
} on Exception catch (e, s) {
// Wrap all other errors in VeilidAPIExceptionInternal
throw VeilidAPIExceptionInternal(
'$e\nStack Trace:\n$s');
throw VeilidAPIExceptionInternal('$e\nStack Trace:\n$s');
} finally {
port.close();
}
}
@ -490,7 +485,6 @@ class _Ctx {
// FFI implementation of VeilidRoutingContext
class VeilidRoutingContextFFI extends VeilidRoutingContext {
VeilidRoutingContextFFI._(this._ctx) {
_finalizer.attach(this, _ctx, detach: this);
}
@ -535,7 +529,7 @@ class VeilidRoutingContextFFI extends VeilidRoutingContext {
final sendPort = recvPort.sendPort;
_ctx.ffi._routingContextAppCall(sendPort.nativePort, _ctx.id!,
nativeEncodedTarget, nativeEncodedRequest);
final out = await processFuturePlain(recvPort.first);
final out = await processFuturePlain<String>(recvPort.first);
return base64UrlNoPadDecode(out);
}
@ -613,8 +607,8 @@ class VeilidRoutingContextFFI extends VeilidRoutingContext {
final sendPort = recvPort.sendPort;
_ctx.ffi._routingContextGetDHTValue(
sendPort.nativePort, _ctx.id!, nativeKey, subkey, forceRefresh);
final valueData = await processFutureOptJson(
optFromJson(ValueData.fromJson), recvPort.first);
final valueData =
await processFutureOptJson(ValueData.fromJson, recvPort.first);
return valueData;
}
@ -629,8 +623,8 @@ class VeilidRoutingContextFFI extends VeilidRoutingContext {
final sendPort = recvPort.sendPort;
_ctx.ffi._routingContextSetDHTValue(
sendPort.nativePort, _ctx.id!, nativeKey, subkey, nativeData);
final valueData = await processFutureOptJson(
optFromJson(ValueData.fromJson), recvPort.first);
final valueData =
await processFutureOptJson(ValueData.fromJson, recvPort.first);
return valueData;
}
@ -668,7 +662,6 @@ class VeilidRoutingContextFFI extends VeilidRoutingContext {
}
class _TDBT {
_TDBT(int this.id, this.tdbffi, this.ffi);
int? id;
final VeilidTableDBFFI tdbffi;
@ -689,7 +682,6 @@ class _TDBT {
// FFI implementation of VeilidTableDBTransaction
class VeilidTableDBTransactionFFI extends VeilidTableDBTransaction {
VeilidTableDBTransactionFFI._(this._tdbt) {
_finalizer.attach(this, _tdbt, detach: this);
}
@ -780,7 +772,6 @@ class _TDB {
// FFI implementation of VeilidTableDB
class VeilidTableDBFFI extends VeilidTableDB {
VeilidTableDBFFI._(this._tdb) {
_finalizer.attach(this, _tdb, detach: this);
}
@ -852,7 +843,7 @@ class VeilidTableDBFFI extends VeilidTableDB {
col,
nativeEncodedKey,
);
final out = await processFuturePlain(recvPort.first);
final out = await processFuturePlain<String?>(recvPort.first);
if (out == null) {
return null;
}
@ -872,7 +863,7 @@ class VeilidTableDBFFI extends VeilidTableDB {
col,
nativeEncodedKey,
);
final out = await processFuturePlain(recvPort.first);
final out = await processFuturePlain<String?>(recvPort.first);
if (out == null) {
return null;
}
@ -882,7 +873,6 @@ class VeilidTableDBFFI extends VeilidTableDB {
// FFI implementation of VeilidCryptoSystem
class VeilidCryptoSystemFFI extends VeilidCryptoSystem {
VeilidCryptoSystemFFI._(this._ffi, this._kind);
final CryptoKind _kind;
final VeilidFFI _ffi;
@ -917,7 +907,7 @@ class VeilidCryptoSystemFFI extends VeilidCryptoSystem {
final recvPort = ReceivePort('crypto_random_bytes');
final sendPort = recvPort.sendPort;
_ffi._cryptoRandomBytes(sendPort.nativePort, _kind, len);
final out = await processFuturePlain(recvPort.first);
final out = await processFuturePlain<String>(recvPort.first);
return base64UrlNoPadDecode(out);
}
@ -1088,7 +1078,7 @@ class VeilidCryptoSystemFFI extends VeilidCryptoSystem {
final sendPort = recvPort.sendPort;
_ffi._cryptoDecryptAead(sendPort.nativePort, _kind, nativeEncodedBody,
nativeNonce, nativeSharedSecret, nativeSignature);
final out = await processFuturePlain(recvPort.first);
final out = await processFuturePlain<String>(recvPort.first);
return base64UrlNoPadDecode(out);
}
@ -1106,7 +1096,7 @@ class VeilidCryptoSystemFFI extends VeilidCryptoSystem {
final sendPort = recvPort.sendPort;
_ffi._cryptoEncryptAead(sendPort.nativePort, _kind, nativeEncodedBody,
nativeNonce, nativeSharedSecret, nativeSignature);
final out = await processFuturePlain(recvPort.first);
final out = await processFuturePlain<String>(recvPort.first);
return base64UrlNoPadDecode(out);
}
@ -1121,31 +1111,34 @@ class VeilidCryptoSystemFFI extends VeilidCryptoSystem {
final sendPort = recvPort.sendPort;
_ffi._cryptoCryptNoAuth(sendPort.nativePort, _kind, nativeEncodedBody,
nativeNonce, nativeSharedSecret);
final out = await processFuturePlain(recvPort.first);
final out = await processFuturePlain<String>(recvPort.first);
return base64UrlNoPadDecode(out);
}
}
// FFI implementation of high level Veilid API
class VeilidFFI extends Veilid {
VeilidFFI(DynamicLibrary dylib)
: _dylib = dylib,
_freeString =
dylib.lookupFunction<Void Function(Pointer<Utf8>), _FreeStringDart>('free_string'),
_initializeVeilidCore = dylib.lookupFunction<Void Function(Pointer<Utf8>),
dylib.lookupFunction<Void Function(Pointer<Utf8>), _FreeStringDart>(
'free_string'),
_initializeVeilidCore = dylib.lookupFunction<
Void Function(Pointer<Utf8>),
_InitializeVeilidCoreDart>('initialize_veilid_core'),
_changeLogLevel =
dylib.lookupFunction<Void Function(Pointer<Utf8>, Pointer<Utf8>), _ChangeLogLevelDart>(
'change_log_level'),
_startupVeilidCore =
dylib.lookupFunction<Void Function(Int64, Int64, Pointer<Utf8>), _StartupVeilidCoreDart>(
'startup_veilid_core'),
_changeLogLevel = dylib.lookupFunction<
Void Function(Pointer<Utf8>, Pointer<Utf8>),
_ChangeLogLevelDart>('change_log_level'),
_startupVeilidCore = dylib.lookupFunction<
Void Function(Int64, Int64, Pointer<Utf8>),
_StartupVeilidCoreDart>('startup_veilid_core'),
_getVeilidState =
dylib.lookupFunction<Void Function(Int64), _GetVeilidStateDart>(
'get_veilid_state'),
_attach = dylib.lookupFunction<Void Function(Int64), _AttachDart>('attach'),
_detach = dylib.lookupFunction<Void Function(Int64), _DetachDart>('detach'),
_attach =
dylib.lookupFunction<Void Function(Int64), _AttachDart>('attach'),
_detach =
dylib.lookupFunction<Void Function(Int64), _DetachDart>('detach'),
_shutdownVeilidCore =
dylib.lookupFunction<Void Function(Int64), _ShutdownVeilidCoreDart>(
'shutdown_veilid_core'),
@ -1165,7 +1158,8 @@ class VeilidFFI extends Veilid {
Uint32 Function(Uint32, Pointer<Utf8>),
_RoutingContextWithSequencingDart>(
'routing_context_with_sequencing'),
_routingContextAppCall = dylib.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>),
_routingContextAppCall = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>),
_RoutingContextAppCallDart>('routing_context_app_call'),
_routingContextAppMessage = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>),
@ -1193,7 +1187,8 @@ class VeilidFFI extends Veilid {
Void Function(Int64, Uint32, Pointer<Utf8>, Uint32, Pointer<Utf8>),
_RoutingContextSetDHTValueDart>('routing_context_set_dht_value'),
_routingContextWatchDHTValues = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>, Uint64, Uint32),
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>,
Uint64, Uint32),
_RoutingContextWatchDHTValuesDart>(
'routing_context_watch_dht_values'),
_routingContextCancelDHTWatch = dylib.lookupFunction<
@ -1203,35 +1198,41 @@ class VeilidFFI extends Veilid {
_newPrivateRoute =
dylib.lookupFunction<Void Function(Int64), _NewPrivateRouteDart>(
'new_private_route'),
_newCustomPrivateRoute = dylib.lookupFunction<Void Function(Int64, Pointer<Utf8>, Pointer<Utf8>),
_newCustomPrivateRoute = dylib.lookupFunction<
Void Function(Int64, Pointer<Utf8>, Pointer<Utf8>),
_NewCustomPrivateRouteDart>('new_custom_private_route'),
_importRemotePrivateRoute = dylib.lookupFunction<
Void Function(Int64, Pointer<Utf8>),
_ImportRemotePrivateRouteDart>('import_remote_private_route'),
_releasePrivateRoute = dylib.lookupFunction<Void Function(Int64, Pointer<Utf8>),
_releasePrivateRoute = dylib.lookupFunction<
Void Function(Int64, Pointer<Utf8>),
_ReleasePrivateRouteDart>('release_private_route'),
_appCallReply = dylib.lookupFunction<Void Function(Int64, Pointer<Utf8>, Pointer<Utf8>), _AppCallReplyDart>(
'app_call_reply'),
_openTableDb = dylib
.lookupFunction<Void Function(Int64, Pointer<Utf8>, Uint32), _OpenTableDbDart>('open_table_db'),
_appCallReply = dylib.lookupFunction<
Void Function(Int64, Pointer<Utf8>, Pointer<Utf8>),
_AppCallReplyDart>('app_call_reply'),
_openTableDb = dylib.lookupFunction<
Void Function(Int64, Pointer<Utf8>, Uint32),
_OpenTableDbDart>('open_table_db'),
_releaseTableDb =
dylib.lookupFunction<Int32 Function(Uint32), _ReleaseTableDbDart>(
'release_table_db'),
_deleteTableDb =
dylib.lookupFunction<Void Function(Int64, Pointer<Utf8>), _DeleteTableDbDart>(
'delete_table_db'),
_deleteTableDb = dylib.lookupFunction<
Void Function(Int64, Pointer<Utf8>),
_DeleteTableDbDart>('delete_table_db'),
_tableDbGetColumnCount = dylib.lookupFunction<Uint32 Function(Uint32),
_TableDbGetColumnCountDart>('table_db_get_column_count'),
_tableDbGetKeys =
dylib.lookupFunction<Pointer<Utf8> Function(Uint64, Uint32, Uint32), _TableDbGetKeysDart>(
'table_db_get_keys'),
_tableDbStore = dylib.lookupFunction<Void Function(Int64, Uint32, Uint32, Pointer<Utf8>, Pointer<Utf8>), _TableDbStoreDart>(
'table_db_store'),
_tableDbLoad = dylib
.lookupFunction<Void Function(Int64, Uint32, Uint32, Pointer<Utf8>), _TableDbLoadDart>('table_db_load'),
_tableDbDelete =
dylib.lookupFunction<Void Function(Int64, Uint32, Uint32, Pointer<Utf8>), _TableDbDeleteDart>(
'table_db_delete'),
_tableDbGetKeys = dylib.lookupFunction<
Pointer<Utf8> Function(Uint64, Uint32, Uint32),
_TableDbGetKeysDart>('table_db_get_keys'),
_tableDbStore = dylib.lookupFunction<
Void Function(Int64, Uint32, Uint32, Pointer<Utf8>, Pointer<Utf8>),
_TableDbStoreDart>('table_db_store'),
_tableDbLoad = dylib.lookupFunction<
Void Function(Int64, Uint32, Uint32, Pointer<Utf8>),
_TableDbLoadDart>('table_db_load'),
_tableDbDelete = dylib.lookupFunction<
Void Function(Int64, Uint32, Uint32, Pointer<Utf8>),
_TableDbDeleteDart>('table_db_delete'),
_tableDbTransact =
dylib.lookupFunction<Uint32 Function(Uint32), _TableDbTransactDart>(
'table_db_transact'),
@ -1250,83 +1251,89 @@ class VeilidFFI extends Veilid {
_tableDbTransactionDelete = dylib.lookupFunction<
Void Function(Int64, Uint32, Uint32, Pointer<Utf8>),
_TableDbTransactionDeleteDart>('table_db_transaction_delete'),
_validCryptoKinds =
dylib.lookupFunction<Pointer<Utf8> Function(), _ValidCryptoKindsDart>(
'valid_crypto_kinds'),
_validCryptoKinds = dylib.lookupFunction<Pointer<Utf8> Function(),
_ValidCryptoKindsDart>('valid_crypto_kinds'),
_bestCryptoKind =
dylib.lookupFunction<Uint32 Function(), _BestCryptoKindDart>(
'best_crypto_kind'),
_verifySignatures =
dylib.lookupFunction<Void Function(Int64, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>), _VerifySignaturesDart>(
'verify_signatures'),
_generateSignatures =
dylib.lookupFunction<Void Function(Int64, Pointer<Utf8>, Pointer<Utf8>), _GenerateSignaturesDart>(
'generate_signatures'),
_generateKeyPair =
dylib.lookupFunction<Void Function(Int64, Uint32), _GenerateKeyPairDart>(
'generate_key_pair'),
_cryptoCachedDH =
dylib.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>), _CryptoCachedDHDart>(
'crypto_cached_dh'),
_cryptoComputeDH =
dylib.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>), _CryptoComputeDHDart>(
'crypto_compute_dh'),
_cryptoRandomBytes =
dylib.lookupFunction<Void Function(Int64, Uint32, Uint32), _CryptoRandomBytesDart>(
'crypto_random_bytes'),
_verifySignatures = dylib.lookupFunction<
Void Function(Int64, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>),
_VerifySignaturesDart>('verify_signatures'),
_generateSignatures = dylib.lookupFunction<
Void Function(Int64, Pointer<Utf8>, Pointer<Utf8>),
_GenerateSignaturesDart>('generate_signatures'),
_generateKeyPair = dylib.lookupFunction<Void Function(Int64, Uint32),
_GenerateKeyPairDart>('generate_key_pair'),
_cryptoCachedDH = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>),
_CryptoCachedDHDart>('crypto_cached_dh'),
_cryptoComputeDH = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>),
_CryptoComputeDHDart>('crypto_compute_dh'),
_cryptoRandomBytes = dylib.lookupFunction<
Void Function(Int64, Uint32, Uint32),
_CryptoRandomBytesDart>('crypto_random_bytes'),
_cryptoDefaultSaltLength = dylib.lookupFunction<
Void Function(Int64, Uint32),
_CryptoDefaultSaltLengthDart>('crypto_default_salt_length'),
_cryptoHashPassword =
dylib.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>), _CryptoHashPasswordDart>(
'crypto_hash_password'),
_cryptoVerifyPassword = dylib.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>),
_cryptoHashPassword = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>),
_CryptoHashPasswordDart>('crypto_hash_password'),
_cryptoVerifyPassword = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>),
_CryptoVerifyPasswordDart>('crypto_verify_password'),
_cryptoDeriveSharedSecret = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>),
_CryptoVerifyPasswordDart>('crypto_derive_shared_secret'),
_cryptoRandomNonce =
dylib.lookupFunction<Void Function(Int64, Uint32), _CryptoRandomNonceDart>(
'crypto_random_nonce'),
_cryptoRandomNonce = dylib.lookupFunction<Void Function(Int64, Uint32),
_CryptoRandomNonceDart>('crypto_random_nonce'),
_cryptoRandomSharedSecret = dylib.lookupFunction<
Void Function(Int64, Uint32),
_CryptoRandomSharedSecretDart>('crypto_random_shared_secret'),
_cryptoGenerateKeyPair = dylib.lookupFunction<Void Function(Int64, Uint32),
_cryptoGenerateKeyPair = dylib.lookupFunction<
Void Function(Int64, Uint32),
_CryptoGenerateKeyPairDart>('crypto_generate_key_pair'),
_cryptoGenerateHash =
dylib.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>), _CryptoGenerateHashDart>(
'crypto_generate_hash'),
_cryptoValidateKeyPair = dylib.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>),
_cryptoGenerateHash = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>),
_CryptoGenerateHashDart>('crypto_generate_hash'),
_cryptoValidateKeyPair = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>),
_CryptoValidateKeyPairDart>('crypto_validate_key_pair'),
_cryptoValidateHash =
dylib.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>), _CryptoValidateHashDart>(
'crypto_validate_hash'),
_cryptoDistance =
dylib.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>), _CryptoDistanceDart>(
'crypto_distance'),
_cryptoSign =
dylib.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>), _CryptoSignDart>('crypto_sign'),
_cryptoVerify = dylib
.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>), _CryptoVerifyDart>('crypto_verify'),
_cryptoAeadOverhead =
dylib.lookupFunction<Void Function(Int64, Uint32), _CryptoAeadOverheadDart>(
'crypto_aead_overhead'),
_cryptoDecryptAead =
dylib.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>), _CryptoDecryptAeadDart>(
'crypto_decrypt_aead'),
_cryptoEncryptAead =
dylib.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>), _CryptoEncryptAeadDart>(
'crypto_encrypt_aead'),
_cryptoCryptNoAuth =
dylib.lookupFunction<Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>), _CryptoCryptNoAuthDart>(
'crypto_crypt_no_auth'),
_cryptoValidateHash = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>),
_CryptoValidateHashDart>('crypto_validate_hash'),
_cryptoDistance = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>),
_CryptoDistanceDart>('crypto_distance'),
_cryptoSign = dylib.lookupFunction<
Void Function(
Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>),
_CryptoSignDart>('crypto_sign'),
_cryptoVerify = dylib.lookupFunction<
Void Function(
Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>),
_CryptoVerifyDart>('crypto_verify'),
_cryptoAeadOverhead = dylib.lookupFunction<Void Function(Int64, Uint32),
_CryptoAeadOverheadDart>('crypto_aead_overhead'),
_cryptoDecryptAead = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>,
Pointer<Utf8>, Pointer<Utf8>),
_CryptoDecryptAeadDart>('crypto_decrypt_aead'),
_cryptoEncryptAead = dylib.lookupFunction<
Void Function(Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>,
Pointer<Utf8>, Pointer<Utf8>),
_CryptoEncryptAeadDart>('crypto_encrypt_aead'),
_cryptoCryptNoAuth = dylib.lookupFunction<
Void Function(
Int64, Uint32, Pointer<Utf8>, Pointer<Utf8>, Pointer<Utf8>),
_CryptoCryptNoAuthDart>('crypto_crypt_no_auth'),
_now = dylib.lookupFunction<Uint64 Function(), _NowDart>('now'),
_debug = dylib.lookupFunction<Void Function(Int64, Pointer<Utf8>), _DebugDart>('debug'),
_debug = dylib.lookupFunction<Void Function(Int64, Pointer<Utf8>),
_DebugDart>('debug'),
_veilidVersionString = dylib.lookupFunction<Pointer<Utf8> Function(),
_VeilidVersionStringDart>('veilid_version_string'),
_veilidVersion =
dylib.lookupFunction<VeilidVersionFFI Function(), _VeilidVersionDart>(
'veilid_version') {
_veilidVersion = dylib.lookupFunction<VeilidVersionFFI Function(),
_VeilidVersionDart>('veilid_version') {
// Get veilid_flutter initializer
final initializeVeilidFlutter = _dylib.lookupFunction<
Void Function(Pointer<_DartPostCObject>),
@ -1397,7 +1404,8 @@ class VeilidFFI extends Veilid {
final _CryptoDefaultSaltLengthDart _cryptoDefaultSaltLength;
final _CryptoHashPasswordDart _cryptoHashPassword;
final _CryptoVerifyPasswordDart _cryptoVerifyPassword;
final void Function(int, int, Pointer<Utf8>, Pointer<Utf8>) _cryptoDeriveSharedSecret;
final void Function(int, int, Pointer<Utf8>, Pointer<Utf8>)
_cryptoDeriveSharedSecret;
final _CryptoRandomNonceDart _cryptoRandomNonce;
final _CryptoRandomSharedSecretDart _cryptoRandomSharedSecret;
@ -1432,8 +1440,9 @@ class VeilidFFI extends Veilid {
final nativeLogLevel = jsonEncode(logLevel).toNativeUtf8();
final nativeLayer = layer.toNativeUtf8();
_changeLogLevel(nativeLayer, nativeLogLevel);
malloc.free(nativeLayer);
malloc.free(nativeLogLevel);
malloc
..free(nativeLayer)
..free(nativeLogLevel);
}
@override
@ -1488,7 +1497,7 @@ class VeilidFFI extends Veilid {
final recvPort = ReceivePort('routing_context');
final sendPort = recvPort.sendPort;
_routingContext(sendPort.nativePort);
final id = await processFuturePlain(recvPort.first);
final id = await processFuturePlain<int>(recvPort.first);
return VeilidRoutingContextFFI._(_Ctx(id, this));
}
@ -1548,7 +1557,7 @@ class VeilidFFI extends Veilid {
final recvPort = ReceivePort('open_table_db');
final sendPort = recvPort.sendPort;
_openTableDb(sendPort.nativePort, name.toNativeUtf8(), columnCount);
final id = await processFuturePlain(recvPort.first);
final id = await processFuturePlain<int>(recvPort.first);
return VeilidTableDBFFI._(_TDB(id, this));
}
@ -1557,8 +1566,7 @@ class VeilidFFI extends Veilid {
final recvPort = ReceivePort('delete_table_db');
final sendPort = recvPort.sendPort;
_deleteTableDb(sendPort.nativePort, name.toNativeUtf8());
final deleted = await processFuturePlain(recvPort.first);
return deleted;
return await processFuturePlain(recvPort.first);
}
@override
@ -1578,7 +1586,8 @@ class VeilidFFI extends Veilid {
}
@override
Future<VeilidCryptoSystem> bestCryptoSystem() async => VeilidCryptoSystemFFI._(this, _bestCryptoKind());
Future<VeilidCryptoSystem> bestCryptoSystem() async =>
VeilidCryptoSystemFFI._(this, _bestCryptoKind());
@override
Future<List<TypedKey>> verifySignatures(List<TypedKey> nodeIds,

View File

@ -14,11 +14,13 @@ Veilid getVeilid() => VeilidJS();
Object wasm = js_util.getProperty(html.window, 'veilid_wasm');
Future<T> _wrapApiPromise<T>(Object p) => js_util
.promiseToFuture<T>(p)
.then((value) => value)
// ignore: inference_failure_on_untyped_parameter
.catchError((error) => Future<T>.error(
VeilidAPIException.fromJson(jsonDecode(error as String))));
.promiseToFuture<T>(p)
.then((value) => value)
// ignore: inference_failure_on_untyped_parameter
.catchError((e) {
// Wrap all other errors in VeilidAPIExceptionInternal
throw VeilidAPIExceptionInternal(e.toString());
}, test: (e) => e is! VeilidAPIException);
class _Ctx {
_Ctx(int this.id, this.js);