Class: DInstaller::DBus::ServiceRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/dinstaller/dbus/service_runner.rb

Overview

Set up and run a given D-Bus service

Examples:

Run the manager service

runner = ServiceRunner.new(:manager)
runner.run

Run the users service

runner = ServiceRunner.new(:users)
runner.run

Instance Method Summary collapse

Constructor Details

#initialize(name, logger: Logger.new($stdout)) ⇒ ServiceRunner

Returns a new instance of ServiceRunner.

Parameters:

  • name (Symbol, String)

    Service name (:manager, :users, etc.)

  • logger (Logger) (defaults to: Logger.new($stdout))

    Service logger



39
40
41
42
# File 'lib/dinstaller/dbus/service_runner.rb', line 39

def initialize(name, logger: Logger.new($stdout))
  @name = name || :manager
  @logger = logger
end

Instance Method Details

#runObject

Run the Service

This method listens for D-Bus calls.



47
48
49
50
51
52
53
54
55
56
# File 'lib/dinstaller/dbus/service_runner.rb', line 47

def run
  initialize_yast
  service = build_service(name, logger)
  # TODO: implement a #start method in all services,
  # which is equivalent to #export in most cases.
  service.respond_to?(:start) ? service.start : service.export
  EventMachine.run do
    EventMachine::PeriodicTimer.new(0.1) { service.dispatch }
  end
end