readDBusValue method

DBusValue? readDBusValue(
  1. DBusSignature signature,
  2. dynamic item
)

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'";
  }
}