mirror of
https://gitlab.com/veilid/veilid.git
synced 2024-10-01 01:26:08 -04:00
Merge branch veilid:main into main
This commit is contained in:
commit
29d4de05ea
@ -228,10 +228,11 @@ impl RoutingContext {
|
|||||||
///////////////////////////////////
|
///////////////////////////////////
|
||||||
/// DHT Records
|
/// DHT Records
|
||||||
|
|
||||||
/// Creates a new DHT record a specified crypto kind and schema.
|
/// Creates a new DHT record
|
||||||
///
|
///
|
||||||
/// The record is considered 'open' after the create operation succeeds.
|
/// The record is considered 'open' after the create operation succeeds.
|
||||||
///
|
/// * 'schema' - the schema to use when creating the DHT record
|
||||||
|
/// * 'kind' - specify a cryptosystem kind to use. Normally you will leave this as None to choose the 'best' cryptosystem available.
|
||||||
/// Returns the newly allocated DHT record's key if successful.
|
/// Returns the newly allocated DHT record's key if successful.
|
||||||
#[instrument(target = "veilid_api", level = "debug", ret, err)]
|
#[instrument(target = "veilid_api", level = "debug", ret, err)]
|
||||||
pub async fn create_dht_record(
|
pub async fn create_dht_record(
|
||||||
|
@ -28,6 +28,9 @@ Uint8List cryptoKindToBytes(CryptoKind kind) {
|
|||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CryptoKind cryptoKindFromBytes(Uint8List b) =>
|
||||||
|
ByteData.sublistView(b).getUint32(0);
|
||||||
|
|
||||||
CryptoKind cryptoKindFromString(String s) {
|
CryptoKind cryptoKindFromString(String s) {
|
||||||
if (s.codeUnits.length != 4) {
|
if (s.codeUnits.length != 4) {
|
||||||
throw const FormatException('malformed string');
|
throw const FormatException('malformed string');
|
||||||
@ -53,6 +56,11 @@ class Typed<V extends EncodedString> extends Equatable {
|
|||||||
final value = EncodedString.fromString<V>(parts.sublist(1).join(':'));
|
final value = EncodedString.fromString<V>(parts.sublist(1).join(':'));
|
||||||
return Typed(kind: kind, value: value);
|
return Typed(kind: kind, value: value);
|
||||||
}
|
}
|
||||||
|
factory Typed.fromBytes(Uint8List b) {
|
||||||
|
final kind = cryptoKindFromBytes(b);
|
||||||
|
final value = EncodedString.fromBytes<V>(b.sublist(4));
|
||||||
|
return Typed(kind: kind, value: value);
|
||||||
|
}
|
||||||
factory Typed.fromJson(dynamic json) => Typed.fromString(json as String);
|
factory Typed.fromJson(dynamic json) => Typed.fromString(json as String);
|
||||||
final CryptoKind kind;
|
final CryptoKind kind;
|
||||||
final V value;
|
final V value;
|
||||||
@ -69,6 +77,32 @@ class Typed<V extends EncodedString> extends Equatable {
|
|||||||
return b.toBytes();
|
return b.toBytes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int encodedLength<X>() {
|
||||||
|
switch (X) {
|
||||||
|
case const (Typed<FixedEncodedString32>):
|
||||||
|
return FixedEncodedString32.encodedLength() + 5;
|
||||||
|
case const (Typed<FixedEncodedString43>):
|
||||||
|
return FixedEncodedString43.encodedLength() + 5;
|
||||||
|
case const (Typed<FixedEncodedString86>):
|
||||||
|
return FixedEncodedString86.encodedLength() + 5;
|
||||||
|
default:
|
||||||
|
throw UnimplementedError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int decodedLength<X>() {
|
||||||
|
switch (X) {
|
||||||
|
case const (Typed<FixedEncodedString32>):
|
||||||
|
return FixedEncodedString32.decodedLength() + 4;
|
||||||
|
case const (Typed<FixedEncodedString43>):
|
||||||
|
return FixedEncodedString43.decodedLength() + 4;
|
||||||
|
case const (Typed<FixedEncodedString86>):
|
||||||
|
return FixedEncodedString86.decodedLength() + 4;
|
||||||
|
default:
|
||||||
|
throw UnimplementedError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
String toJson() => toString();
|
String toJson() => toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,6 +52,32 @@ abstract class EncodedString extends Equatable {
|
|||||||
@override
|
@override
|
||||||
String toString() => contents;
|
String toString() => contents;
|
||||||
|
|
||||||
|
static int encodedLength<T extends EncodedString>() {
|
||||||
|
switch (T) {
|
||||||
|
case FixedEncodedString32:
|
||||||
|
return FixedEncodedString32.encodedLength();
|
||||||
|
case FixedEncodedString43:
|
||||||
|
return FixedEncodedString43.encodedLength();
|
||||||
|
case FixedEncodedString86:
|
||||||
|
return FixedEncodedString86.encodedLength();
|
||||||
|
default:
|
||||||
|
throw UnimplementedError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int decodedLength<T extends EncodedString>() {
|
||||||
|
switch (T) {
|
||||||
|
case FixedEncodedString32:
|
||||||
|
return FixedEncodedString32.decodedLength();
|
||||||
|
case FixedEncodedString43:
|
||||||
|
return FixedEncodedString43.decodedLength();
|
||||||
|
case FixedEncodedString86:
|
||||||
|
return FixedEncodedString86.decodedLength();
|
||||||
|
default:
|
||||||
|
throw UnimplementedError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static T fromBytes<T extends EncodedString>(Uint8List bytes) {
|
static T fromBytes<T extends EncodedString>(Uint8List bytes) {
|
||||||
switch (T) {
|
switch (T) {
|
||||||
case FixedEncodedString32:
|
case FixedEncodedString32:
|
||||||
|
Loading…
Reference in New Issue
Block a user