readDBusValue method
Reads a DBusValue with signature
.
Implementation
DBusValue? readDBusValue(DBusSignature signature, dynamic item) {
// print("readDBusValue signature: $signature item: $item");
var s = signature.value;
if (s == 'y') {
return readDBusByte(item);
} else if (s == 'b') {
return readDBusBoolean(item);
} else if (s == 'n') {
return readDBusInt16(item);
} else if (s == 'q') {
return readDBusUint16(item);
} else if (s == 'i') {
return readDBusInt32(item);
} else if (s == 'u') {
return readDBusUint32(item);
} else if (s == 'x') {
return readDBusInt64(item);
} else if (s == 't') {
return readDBusUint64(item);
} else if (s == 'd') {
return readDBusDouble(item);
} else if (s == 's') {
return readDBusString(item);
} else if (s == 'o') {
return readDBusObjectPath(item);
} else if (s == 'g') {
return readDBusSignature(item);
} else if (s == 'v') {
return readDBusVariant(item);
} else if (s == 'm') {
throw 'D-Bus reserved maybe type not valid';
} else if (s.startsWith('a{') && s.endsWith('}')) {
var childSignature = DBusSignature(s.substring(2, s.length - 1));
var signatures = childSignature.split();
if (signatures.length != 2) {
throw 'Invalid dict signature ${childSignature.value}';
}
var keySignature = signatures[0];
var valueSignature = signatures[1];
if (!keySignature.isBasic) {
throw 'Invalid dict key signature ${keySignature.value}';
}
return readDBusDict(keySignature, valueSignature, item);
} else if (s.startsWith('a')) {
return readDBusArray(DBusSignature(s.substring(1, s.length)), item);
} else if (s.startsWith('(') && s.endsWith(')')) {
return readDBusStruct(
DBusSignature(s.substring(1, s.length - 1)).split(), item);
} else {
throw "Unknown D-Bus data type '$s'";
}
}