Example #1
0
class MainLoop:
    def __init__(self, scheduler: 'Scheduler', bus=SYSTEM_BUS):
        self.interface = DBusInterface(scheduler=scheduler)
        self.scheduler = scheduler
        self.scheduler.status_update_callback = self.__status_update_handler
        self.scheduler.pause_callback = self.__pause_handler
        self.bus = bus
        self.service_identifier = get_dbus_service_identifier(bus)
        self.loop = EventLoop()

    def start(self):
        self.bus.publish_object(self.service_identifier.object_path,
                                self.interface)
        self.bus.register_service(self.service_identifier.service_name)
        signal.signal(signal.SIGTERM, self.__sigterm_handler)
        try:
            self.loop.run()
        finally:
            self.bus.disconnect()

    def __sigterm_handler(self, signal_number, frame):
        Logger.info('Received SIGTERM')
        self.stop()

    def __status_update_handler(self, job_name: str, scheduler_status: str,
                                retry: int):
        self.interface.StatusUpdateNotifier(job_name, scheduler_status, retry)

    def __pause_handler(self, is_paused: bool):
        self.interface.PauseNotifier(is_paused)

    def stop(self):
        self.loop.quit()
Example #2
0
        def create_loop(*args, **kwargs):
            loop = EventLoop()

            GLib.idle_add(run_in_loop, *args, **kwargs)
            GLib.timeout_add_seconds(self._timeout, kill_loop, loop)

            loop.run()

            return self._result
Example #3
0
#
# Handle changed properties.
# Start the server, start the listener and run the client.
#
from dasbus.loop import EventLoop
from common import REGISTER


def callback(interface, changed_properties, invalid_properties):
    """The callback of the DBus signal PropertiesChanged."""
    print("Properties of {} has changed: {}".format(
        interface, changed_properties
    ))


if __name__ == "__main__":
    # Create a proxy of the object /org/example/Register
    # provided by the service org.example.Register
    proxy = REGISTER.get_proxy()

    # Connect the callback to the DBus signal PropertiesChanged.
    proxy.PropertiesChanged.connect(callback)

    # Start the event loop.
    loop = EventLoop()
    loop.run()