requestName method

Future<DBusRequestNameReply> requestName(
  1. String name, {
  2. Set<DBusRequestNameFlag> flags = const {},
})

Requests usage of name as a D-Bus object name.

Implementation

Future<DBusRequestNameReply> requestName(String name,
    {Set<DBusRequestNameFlag> flags = const {}}) async {
  var flagsValue = 0;
  for (var flag in flags) {
    switch (flag) {
      case DBusRequestNameFlag.allowReplacement:
        flagsValue |= 0x1;
        break;
      case DBusRequestNameFlag.replaceExisting:
        flagsValue |= 0x2;
        break;
      case DBusRequestNameFlag.doNotQueue:
        flagsValue |= 0x4;
        break;
    }
  }
  var result = await callMethod(
      destination: 'org.freedesktop.DBus',
      path: DBusObjectPath('/org/freedesktop/DBus'),
      interface: 'org.freedesktop.DBus',
      name: 'RequestName',
      values: [DBusString(name), DBusUint32(flagsValue)],
      replySignature: DBusSignature('u'));
  var returnCode = result.returnValues[0].asUint32();
  switch (returnCode) {
    case 1:
      _ownedNames.add(DBusBusName(name));
      return DBusRequestNameReply.primaryOwner;
    case 2:
      return DBusRequestNameReply.inQueue;
    case 3:
      return DBusRequestNameReply.exists;
    case 4:
      return DBusRequestNameReply.alreadyOwner;
    default:
      throw 'org.freedesktop.DBusRequestName returned unknown return code: $returnCode';
  }
}