requestName method
Future<DBusRequestNameReply>
requestName(
- String name, {
- 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';
}
}