* mandos: Also import "dbus.service". (Client): Inherit from "dbus.service.Object", which is a new-style class, so inheriting from "object" is no longer necessary. (Client.interface): New temporary variable which only exists during class definition.
(Client.getName, Client.getFingerprint): New D-Bus getter methods. (Client.setSecret): New D-Bus setter method. (Client._set_timeout): Emit D-Bus signal "TimeoutChanged". (Client.getTimeout): New D-Bus getter method. (Client.TimeoutChanged): New D-Bus signal. (Client._set_interval): Emit D-Bus signal "IntervalChanged". (Client.getInterval): New D-Bus getter method. (Client.intervalChanged): New D-Bus signal. (Client.__init__): Also call "dbus.service.Object.__init__". (Client.started): New boolean attribute. (Client.start, Client.stop): Update "self.started", and emit D-Bus signal "StateChanged". (Client.StateChanged): New D-Bus signal. (Client.stop): Use "self.started" instead of misusing "self.secret". Also simplify code by using "getattr" instead of "hasattr". (Client.checker_callback): Emit D-Bus signal "CheckerCompleted". (Client.CheckerCompleted): New D-Bus signal. (Client.bumpTimeout): D-Bus method name for "bump_timeout". (Client.start_checker): Emit D-Bus signal "CheckerStarted". (Client.CheckerStarted): New D-Bus signal. (Client.checkerIsRunning): New D-Bus method. (Client.StopChecker): D-Bus method name for "stop_checker". (Client.still_valid): First check "self.started". (Client.stillValid): D-Bus method name for "still_valid".