Class: DBus::Wrapper::ProcessWatch

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby-dbus-wrapper-process-watch/process_watch.rb

Defined Under Namespace

Classes: NameResolutionFatalError, NameResolutionRecoverableError

Constant Summary collapse

DBUS_ID_REGEXP =
/\A(:1\.[0-9]+)\z/.freeze

Instance Method Summary collapse

Constructor Details

#initialize(bus, process_name_regexp = /.*/) ⇒ ProcessWatch

Returns a new instance of ProcessWatch.



9
10
11
12
13
14
15
16
17
# File 'lib/ruby-dbus-wrapper-process-watch/process_watch.rb', line 9

def initialize(bus, process_name_regexp = /.*/)
  @bus                  = bus
  @process_name_regexp  = process_name_regexp
  
  @known_id_to_name     = {}
  @known_name_to_id     = {}
  @pending              = {}
  @events               = { :resolved => [], :registered => [], :unregistered => [] }
end

Instance Method Details

#on(event_name, &block) ⇒ Object

Raises:



26
27
28
29
30
31
# File 'lib/ruby-dbus-wrapper-process-watch/process_watch.rb', line 26

def on(event_name, &block)
  raise ArgumentError, "Invalid event name #{event_name}" unless @events.keys.include? event_name.to_sym
  raise ArgumentError, "You must pass a block" unless block_given?

  @events[event_name.to_sym] << block
end

#resolve_id_to_name(id) ⇒ Object



39
40
41
# File 'lib/ruby-dbus-wrapper-process-watch/process_watch.rb', line 39

def resolve_id_to_name(id)
  @known_id_to_name[id]
end

#resolve_name_to_id(name) ⇒ Object



34
35
36
# File 'lib/ruby-dbus-wrapper-process-watch/process_watch.rb', line 34

def resolve_name_to_id(name)
  @known_name_to_id[name]
end

#start!Object



20
21
22
23
# File 'lib/ruby-dbus-wrapper-process-watch/process_watch.rb', line 20

def start!
  @bus.monitor_signal("org.freedesktop.DBus", nil, "org.freedesktop.DBus", "NameOwnerChanged") { |message| on_name_owner_changed_signal(message) }
  @bus.method_call("org.freedesktop.DBus", "/", "org.freedesktop.DBus", "ListNames") { |message| on_list_names_return(message) }
end