6 object_prefix = "/de/subdivi/onoff0"
8 dbus_options = argparse.ArgumentParser(add_help=False)
9 dbus_options.add_argument("--bus", default="session",
10 choices=("system", "session"),
11 help="which bus to use (default: %(default)s)")
12 dbus_options.add_argument("--busname", type=str, required=True,
13 help="which busname (i.e. client) to use")
14 dbus_options.add_argument("--device", type=str, required=True,
15 help="which device to control")
17 def get_dbus_proxy(namespace):
19 @param namespace: a namespace returned from a dbus_options argument parser
20 @returns: a dbus object proxy
22 if namespace.bus == "session":
23 bus = dbus.SessionBus()
24 elif namespace.bus == "system":
25 bus = dbus.SystemBus()
27 raise AssertionError("namespace.bus %r is neither session nor system",
29 objname = "%s/%s" % (object_prefix, namespace.device)
30 return bus.get_object(namespace.busname, objname)
33 """Create a socket pair where the latter end is already wrapped for
34 transmission over dbus.
36 @rtype: (socket, dbus.types.UnixFd)
38 s1, s2 = socket.socketpair()
39 s3 = dbus.types.UnixFd(s2)