ruby-dbus 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/NEWS +9 -0
- data/README +5 -16
- data/VERSION +1 -1
- data/doc/tutorial/index.html +9 -0
- data/doc/tutorial/index.markdown +13 -0
- data/examples/gdbus/gdbus +0 -0
- data/examples/no-introspect/call-overloaded.rb +22 -0
- data/examples/no-introspect/nm-test.rb +0 -0
- data/examples/no-introspect/tracker-test.rb +0 -0
- data/examples/rhythmbox/playpause.rb +0 -0
- data/examples/service/call_service.rb +0 -0
- data/examples/service/service_newapi.rb +0 -0
- data/examples/simple/call_introspect.rb +0 -0
- data/examples/simple/properties.rb +19 -0
- data/examples/utils/listnames.rb +0 -0
- data/examples/utils/notify.rb +0 -0
- data/lib/dbus.rb +0 -8
- data/lib/dbus/bus.rb +2 -2
- data/lib/dbus/export.rb +10 -18
- data/lib/dbus/introspect.rb +17 -0
- data/lib/dbus/message.rb +1 -1
- data/ruby-dbus.gemspec +1 -1
- data/test/property_test.rb +55 -0
- data/test/server_robustness_test.rb +31 -0
- data/test/service_newapi.rb +69 -1
- metadata +8 -5
data/NEWS
CHANGED
@@ -5,6 +5,15 @@ Note about bug numbers:
|
|
5
5
|
Issue#1 - http://github.com/mvidner/ruby-dbus/issues#issue/1
|
6
6
|
bnc#1 - https://bugzilla.novell.com/show_bug.cgi?id=1
|
7
7
|
|
8
|
+
== Ruby D-Bus 0.6.0 - 2010-12-11
|
9
|
+
|
10
|
+
Features:
|
11
|
+
* Clients can access properties conveniently (Ticket#28).
|
12
|
+
|
13
|
+
Bug fixes:
|
14
|
+
* Service won't crash whan handling an unknown method or interface (Ticket#31).
|
15
|
+
* Don't send an invalid error name when it originates from a NameError.
|
16
|
+
|
8
17
|
== Ruby D-Bus 0.5.0 - 2010-11-07
|
9
18
|
|
10
19
|
Features:
|
data/README
CHANGED
@@ -5,23 +5,11 @@ D-Bus system can be used in the Ruby programming language.
|
|
5
5
|
|
6
6
|
== Requirements
|
7
7
|
|
8
|
-
* Ruby 1.8 (>= 1.8.6?)
|
9
|
-
|
10
|
-
Optionally, for generating the tutorial:
|
11
|
-
* Webgen (>= 0.4)
|
8
|
+
* Ruby 1.8 (>= 1.8.6?) or 1.9
|
12
9
|
|
13
10
|
== Installation
|
14
11
|
|
15
|
-
|
16
|
-
2. Move to top-level directory and type:
|
17
|
-
|
18
|
-
$ ruby setup.rb config
|
19
|
-
$ ruby setup.rb setup
|
20
|
-
($ su)
|
21
|
-
# ruby setup.rb install
|
22
|
-
|
23
|
-
You can also install files in your favorite directory by
|
24
|
-
supplying setup.rb some options. Try "ruby setup.rb --help".
|
12
|
+
* gem install ruby-dbus
|
25
13
|
|
26
14
|
== Feature
|
27
15
|
|
@@ -42,8 +30,9 @@ Ruby D-Bus currently supports the following features:
|
|
42
30
|
== Usage
|
43
31
|
|
44
32
|
See some of the examples in the examples/ subdirectory of the tarball.
|
45
|
-
Also, check out the included tutorial (in
|
46
|
-
or view it online on
|
33
|
+
Also, check out the included tutorial (in Markdown format) in doc/tutorial/
|
34
|
+
or view it online on
|
35
|
+
https://github.com/mvidner/ruby-dbus/blob/master/doc/tutorial/index.markdown .
|
47
36
|
|
48
37
|
== License
|
49
38
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/doc/tutorial/index.html
CHANGED
@@ -164,6 +164,15 @@ access it with <code>bus.proxy</code> method. For example, you can retrieve an a
|
|
164
164
|
exported service names of a bus like this:</p>
|
165
165
|
<pre><code>bus.proxy.ListNames[0]
|
166
166
|
</code></pre>
|
167
|
+
<h2>Properties</h2>
|
168
|
+
<p>Some D-Bus objects provide access to properties. They are accessed by
|
169
|
+
treating a proxy interface as a hash:</p>
|
170
|
+
<pre><code>nm_iface = network_manager_object["org.freedesktop.NetworkManager"]
|
171
|
+
enabled = nm_iface["WirelessEnabled"]
|
172
|
+
puts "Wireless is " + (enabled ? "enabled":"disabled")
|
173
|
+
puts "Toggling wireless"
|
174
|
+
nm_iface["WirelessEnabled"] = ! enabled
|
175
|
+
</code></pre>
|
167
176
|
<h2>Calling a method asynchronously</h2>
|
168
177
|
<p>D-Bus is <em>asynchronous</em>. This means that you do not have to wait for a
|
169
178
|
reply when you send a message. When you call a remote method that takes a
|
data/doc/tutorial/index.markdown
CHANGED
@@ -229,6 +229,19 @@ exported service names of a bus like this:
|
|
229
229
|
|
230
230
|
bus.proxy.ListNames[0]
|
231
231
|
|
232
|
+
Properties
|
233
|
+
----------
|
234
|
+
|
235
|
+
Some D-Bus objects provide access to properties. They are accessed by
|
236
|
+
treating a proxy interface as a hash:
|
237
|
+
|
238
|
+
nm_iface = network_manager_object["org.freedesktop.NetworkManager"]
|
239
|
+
enabled = nm_iface["WirelessEnabled"]
|
240
|
+
puts "Wireless is " + (enabled ? "enabled":"disabled")
|
241
|
+
puts "Toggling wireless"
|
242
|
+
nm_iface["WirelessEnabled"] = ! enabled
|
243
|
+
|
244
|
+
|
232
245
|
Calling a method asynchronously
|
233
246
|
-------------------------------
|
234
247
|
|
data/examples/gdbus/gdbus
CHANGED
File without changes
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# How to call overloaded methods.
|
4
|
+
|
5
|
+
require 'dbus'
|
6
|
+
|
7
|
+
bus = DBus::SessionmBus.instance
|
8
|
+
|
9
|
+
konsole_svc = bus["org.freedesktop.konsole"]
|
10
|
+
konsole_obj = konsole_svc["/Konsole"]
|
11
|
+
poi = DBus::ProxyObjectInterface.new(konsole_obj, "org.kde.konsole.Konsole")
|
12
|
+
|
13
|
+
|
14
|
+
begin
|
15
|
+
poi.define_method("getDevices", "") # NM 0.6
|
16
|
+
p poi.getDevices
|
17
|
+
rescue Exception
|
18
|
+
poi.define_method("GetDevices", "") # NM 0.7
|
19
|
+
p poi.GetDevices
|
20
|
+
end
|
21
|
+
|
22
|
+
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
require 'dbus'
|
3
|
+
|
4
|
+
bus = DBus::SystemBus.instance
|
5
|
+
nm_service = bus["org.freedesktop.NetworkManager"]
|
6
|
+
network_manager_object = nm_service.object("/org/freedesktop/NetworkManager")
|
7
|
+
network_manager_object.introspect
|
8
|
+
nm_iface = network_manager_object["org.freedesktop.NetworkManager"]
|
9
|
+
|
10
|
+
# read a property
|
11
|
+
enabled = nm_iface["WirelessEnabled"]
|
12
|
+
if enabled
|
13
|
+
puts "Wireless is enabled"
|
14
|
+
else
|
15
|
+
puts "Wireless is disabled"
|
16
|
+
end
|
17
|
+
puts "Toggling wireless"
|
18
|
+
# write a property
|
19
|
+
nm_iface["WirelessEnabled"] = ! enabled
|
data/examples/utils/listnames.rb
CHANGED
File without changes
|
data/examples/utils/notify.rb
CHANGED
File without changes
|
data/lib/dbus.rb
CHANGED
@@ -64,14 +64,6 @@ module DBus
|
|
64
64
|
class IncompleteBufferException < Exception
|
65
65
|
end
|
66
66
|
|
67
|
-
# Exception raised when an interface is not implemented.
|
68
|
-
class InterfaceNotImplemented < Exception
|
69
|
-
end
|
70
|
-
|
71
|
-
# Exception raised when an method is not found in the interface.
|
72
|
-
class MethodNotInInterface < Exception
|
73
|
-
end
|
74
|
-
|
75
67
|
# Exception raised when a method has not been implemented (yet).
|
76
68
|
class MethodNotImplemented < Exception
|
77
69
|
end
|
data/lib/dbus/bus.rb
CHANGED
@@ -427,8 +427,8 @@ module DBus
|
|
427
427
|
pof = DBus::ProxyObjectFactory.new(data, self, dest, path)
|
428
428
|
return pof.build
|
429
429
|
else
|
430
|
-
introspect_data(dest, path) do |
|
431
|
-
yield(DBus::ProxyObjectFactory.new(
|
430
|
+
introspect_data(dest, path) do |async_data|
|
431
|
+
yield(DBus::ProxyObjectFactory.new(async_data, self, dest, path).build)
|
432
432
|
end
|
433
433
|
end
|
434
434
|
end
|
data/lib/dbus/export.rb
CHANGED
@@ -11,18 +11,6 @@
|
|
11
11
|
require 'thread'
|
12
12
|
|
13
13
|
module DBus
|
14
|
-
# Exception raised when an interface cannot be found in an object.
|
15
|
-
class InterfaceNotInObject < Exception
|
16
|
-
end
|
17
|
-
|
18
|
-
# Exception raised when a method cannot be found in an inferface.
|
19
|
-
class MethodNotInInterface < Exception
|
20
|
-
end
|
21
|
-
|
22
|
-
# Method raised when a method returns an invalid return type.
|
23
|
-
class InvalidReturnType < Exception
|
24
|
-
end
|
25
|
-
|
26
14
|
# Exported object type
|
27
15
|
# = Exportable D-Bus object class
|
28
16
|
#
|
@@ -55,14 +43,18 @@ module DBus
|
|
55
43
|
def dispatch(msg)
|
56
44
|
case msg.message_type
|
57
45
|
when Message::METHOD_CALL
|
58
|
-
if not self.intfs[msg.interface]
|
59
|
-
raise InterfaceNotInObject, msg.interface
|
60
|
-
end
|
61
|
-
meth = self.intfs[msg.interface].methods[msg.member.to_sym]
|
62
|
-
raise MethodNotInInterface if not meth
|
63
|
-
methname = Object.make_method_name(msg.interface, msg.member)
|
64
46
|
reply = nil
|
65
47
|
begin
|
48
|
+
if not self.intfs[msg.interface]
|
49
|
+
raise DBus.error("org.freedesktop.DBus.Error.UnknownMethod"),
|
50
|
+
"Interface \"#{msg.interface}\" of object \"#{msg.path}\" doesn't exist"
|
51
|
+
end
|
52
|
+
meth = self.intfs[msg.interface].methods[msg.member.to_sym]
|
53
|
+
if not meth
|
54
|
+
raise DBus.error("org.freedesktop.DBus.Error.UnknownMethod"),
|
55
|
+
"Method \"#{msg.member}\" on interface \"#{msg.interface}\" of object \"#{msg.path}\" doesn't exist"
|
56
|
+
end
|
57
|
+
methname = Object.make_method_name(msg.interface, msg.member)
|
66
58
|
retdata = method(methname).call(*msg.params)
|
67
59
|
retdata = [*retdata]
|
68
60
|
|
data/lib/dbus/introspect.rb
CHANGED
@@ -422,6 +422,23 @@ module DBus
|
|
422
422
|
bus.add_match(mr) { |msg| block.call(*msg.params) }
|
423
423
|
end
|
424
424
|
end
|
425
|
+
|
426
|
+
PROPERTY_INTERFACE = "org.freedesktop.DBus.Properties"
|
427
|
+
|
428
|
+
# Read a property.
|
429
|
+
def [](propname)
|
430
|
+
self.object[PROPERTY_INTERFACE].Get(self.name, propname)[0]
|
431
|
+
end
|
432
|
+
|
433
|
+
# Write a property.
|
434
|
+
def []=(propname, value)
|
435
|
+
self.object[PROPERTY_INTERFACE].Set(self.name, propname, value)
|
436
|
+
end
|
437
|
+
|
438
|
+
# Read all properties at once, as a hash.
|
439
|
+
def all_properties
|
440
|
+
self.object[PROPERTY_INTERFACE].GetAll(self.name)[0]
|
441
|
+
end
|
425
442
|
end # class ProxyObjectInterface
|
426
443
|
|
427
444
|
# D-Bus proxy object class
|
data/lib/dbus/message.rb
CHANGED
data/ruby-dbus.gemspec
CHANGED
@@ -10,7 +10,7 @@ GEMSPEC = Gem::Specification.new do |s|
|
|
10
10
|
s.version = File.read("VERSION").strip
|
11
11
|
s.author = "Ruby DBus Team"
|
12
12
|
s.email = "ruby-dbus-devel@lists.luon.net"
|
13
|
-
s.homepage = "
|
13
|
+
s.homepage = "https://trac.luon.net/ruby-dbus"
|
14
14
|
s.files = FileList["{doc/tutorial,examples,lib,test}/**/*", "Rakefile", "ruby-dbus.gemspec", "VERSION"].to_a.sort
|
15
15
|
s.require_path = "lib"
|
16
16
|
s.has_rdoc = true
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require "test/unit"
|
3
|
+
require "dbus"
|
4
|
+
|
5
|
+
class PropertyTest < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
session_bus = DBus::SessionBus.instance
|
8
|
+
svc = session_bus.service("org.ruby.service")
|
9
|
+
@obj = svc.object("/org/ruby/MyInstance")
|
10
|
+
@obj.introspect
|
11
|
+
@iface = @obj["org.ruby.SampleInterface"]
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_property_reading
|
15
|
+
assert_equal "READ ME", @iface["ReadMe"]
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_property_nonreading
|
19
|
+
e = assert_raises DBus::Error do
|
20
|
+
@iface["WriteMe"]
|
21
|
+
end
|
22
|
+
assert_match(/not readable/, e.to_s)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_property_writing
|
26
|
+
@iface["ReadOrWriteMe"] = "VALUE"
|
27
|
+
assert_equal "VALUE", @iface["ReadOrWriteMe"]
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_property_nonwriting
|
31
|
+
e = assert_raises DBus::Error do
|
32
|
+
@iface["ReadMe"] = "WROTE"
|
33
|
+
end
|
34
|
+
assert_match(/not writable/, e.to_s)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_get_all
|
38
|
+
all = @iface.all_properties
|
39
|
+
assert_equal ["ReadMe", "ReadOrWriteMe"], all.keys.sort
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_unknown_property_reading
|
43
|
+
e = assert_raises DBus::Error do
|
44
|
+
@iface["Spoon"]
|
45
|
+
end
|
46
|
+
assert_match(/not found/, e.to_s)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_unknown_property_writing
|
50
|
+
e = assert_raises DBus::Error do
|
51
|
+
@iface["Spoon"] = "FORK"
|
52
|
+
end
|
53
|
+
assert_match(/not found/, e.to_s)
|
54
|
+
end
|
55
|
+
end
|
@@ -38,4 +38,35 @@ class ServerRobustnessTest < Test::Unit::TestCase
|
|
38
38
|
rescue DBus::Error => e
|
39
39
|
assert_no_match(/timeout/, e.to_s)
|
40
40
|
end
|
41
|
+
|
42
|
+
def test_a_method_that_raises_name_error
|
43
|
+
obj = @svc.object "/org/ruby/MyInstance"
|
44
|
+
obj.introspect
|
45
|
+
obj.default_iface = "org.ruby.SampleInterface"
|
46
|
+
obj.will_raise_name_error
|
47
|
+
assert false, "should have raised"
|
48
|
+
rescue DBus::Error => e
|
49
|
+
assert_no_match(/timeout/, e.to_s)
|
50
|
+
end
|
51
|
+
|
52
|
+
# https://trac.luon.net/ruby-dbus/ticket/31#comment:3
|
53
|
+
def test_no_such_method_without_introspection
|
54
|
+
obj = @svc.object "/org/ruby/MyInstance"
|
55
|
+
ifc = DBus::ProxyObjectInterface.new(obj, "org.ruby.SampleInterface")
|
56
|
+
ifc.define_method("not_the_answer", "out n:i")
|
57
|
+
ifc.not_the_answer
|
58
|
+
assert false, "should have raised"
|
59
|
+
rescue DBus::Error => e
|
60
|
+
assert_no_match(/timeout/, e)
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_no_such_interface_without_introspection
|
64
|
+
obj = @svc.object "/org/ruby/MyInstance"
|
65
|
+
ifc = DBus::ProxyObjectInterface.new(obj, "org.ruby.NoSuchInterface")
|
66
|
+
ifc.define_method("the_answer", "out n:i")
|
67
|
+
ifc.the_answer
|
68
|
+
assert false, "should have raised"
|
69
|
+
rescue DBus::Error => e
|
70
|
+
assert_no_match(/timeout/, e)
|
71
|
+
end
|
41
72
|
end
|
data/test/service_newapi.rb
CHANGED
@@ -9,9 +9,18 @@ def d(msg)
|
|
9
9
|
puts "#{$$} #{msg}" if $DEBUG
|
10
10
|
end
|
11
11
|
|
12
|
+
PROPERTY_INTERFACE = "org.freedesktop.DBus.Properties"
|
13
|
+
|
12
14
|
class Test < DBus::Object
|
15
|
+
INTERFACE = "org.ruby.SampleInterface"
|
16
|
+
def initialize(path)
|
17
|
+
super path
|
18
|
+
@read_me = "READ ME"
|
19
|
+
@read_or_write_me = "READ OR WRITE ME"
|
20
|
+
end
|
21
|
+
|
13
22
|
# Create an interface aggregating all upcoming dbus_method defines.
|
14
|
-
dbus_interface
|
23
|
+
dbus_interface INTERFACE do
|
15
24
|
dbus_method :hello, "in name:s, in name2:s" do |name, name2|
|
16
25
|
puts "hello(#{name}, #{name2})"
|
17
26
|
end
|
@@ -40,6 +49,10 @@ class Test < DBus::Object
|
|
40
49
|
raise DBus.error, "failed as designed"
|
41
50
|
end
|
42
51
|
|
52
|
+
dbus_method :will_raise_name_error, "" do
|
53
|
+
"foo".frobnicate
|
54
|
+
end
|
55
|
+
|
43
56
|
dbus_method :Error, "in name:s, in description:s" do |name, description|
|
44
57
|
raise DBus.error(name), description
|
45
58
|
end
|
@@ -81,6 +94,61 @@ class Test < DBus::Object
|
|
81
94
|
|
82
95
|
dbus_signal :LongTaskEnd
|
83
96
|
end
|
97
|
+
|
98
|
+
# Properties:
|
99
|
+
# ReadMe:string, returns "READ ME" at first, then what WriteMe received
|
100
|
+
# WriteMe:string
|
101
|
+
# ReadOrWriteMe:string, returns "READ OR WRITE ME" at first
|
102
|
+
dbus_interface PROPERTY_INTERFACE do
|
103
|
+
dbus_method :Get, "in interface:s, in propname:s, out value:v" do |interface, propname|
|
104
|
+
if interface == INTERFACE
|
105
|
+
if propname == "ReadMe"
|
106
|
+
[@read_me]
|
107
|
+
elsif propname == "ReadOrWriteMe"
|
108
|
+
[@read_or_write_me]
|
109
|
+
elsif propname == "WriteMe"
|
110
|
+
raise DBus.error("org.freedesktop.DBus.Error.InvalidArgs"), "Property '#{interface}.#{propname}' (on object '#{@path}') is not readable"
|
111
|
+
else
|
112
|
+
raise DBus.error("org.freedesktop.DBus.Error.InvalidArgs"), "Property '#{interface}.#{propname}' not found on object '#{@path}'"
|
113
|
+
end
|
114
|
+
else
|
115
|
+
raise DBus.error("org.freedesktop.DBus.Error.UnknownInterface"), "Interface '#{interface}' not found on object '#{@path}'"
|
116
|
+
end
|
117
|
+
# what should happen for unknown properties
|
118
|
+
# plasma: InvalidArgs (propname), UnknownInterface (interface)
|
119
|
+
end
|
120
|
+
|
121
|
+
dbus_method :Set, "in interface:s, in propname:s, in value:v" do |interface, propname, value|
|
122
|
+
if interface == INTERFACE
|
123
|
+
if propname == "ReadMe"
|
124
|
+
raise DBus.error("org.freedesktop.DBus.Error.InvalidArgs"), "Property '#{interface}.#{propname}' (on object '#{@path}') is not writable"
|
125
|
+
elsif propname == "ReadOrWriteMe"
|
126
|
+
@read_or_write_me = value
|
127
|
+
self.PropertiesChanged(interface, {propname => value}, [])
|
128
|
+
elsif propname == "WriteMe"
|
129
|
+
@read_me = value
|
130
|
+
self.PropertiesChanged(interface, {"ReadMe" => value}, [])
|
131
|
+
else
|
132
|
+
raise DBus.error("org.freedesktop.DBus.Error.InvalidArgs"), "Property '#{interface}.#{propname}' not found on object '#{@path}'"
|
133
|
+
end
|
134
|
+
else
|
135
|
+
raise DBus.error("org.freedesktop.DBus.Error.UnknownInterface"), "Interface '#{interface}' not found on object '#{@path}'"
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
dbus_method :GetAll, "in interface:s, out value:a{sv}" do |interface|
|
140
|
+
if interface == INTERFACE
|
141
|
+
[ {
|
142
|
+
"ReadMe" => @read_me,
|
143
|
+
"ReadOrWriteMe" =>@read_or_write_me,
|
144
|
+
} ]
|
145
|
+
else
|
146
|
+
raise DBus.error("org.freedesktop.DBus.Error.UnknownInterface"), "Interface '#{interface}' not found on object '#{@path}'"
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
dbus_signal :PropertiesChanged, "interface:s, changed_properties:a{sv}, invalidated_properties:as"
|
151
|
+
end
|
84
152
|
end
|
85
153
|
|
86
154
|
class Derived < Test
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-dbus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 6
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.6.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ruby DBus Team
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-12-10 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -37,12 +37,14 @@ files:
|
|
37
37
|
- examples/gdbus/gdbus
|
38
38
|
- examples/gdbus/gdbus.glade
|
39
39
|
- examples/gdbus/launch.sh
|
40
|
+
- examples/no-introspect/call-overloaded.rb
|
40
41
|
- examples/no-introspect/nm-test.rb
|
41
42
|
- examples/no-introspect/tracker-test.rb
|
42
43
|
- examples/rhythmbox/playpause.rb
|
43
44
|
- examples/service/call_service.rb
|
44
45
|
- examples/service/service_newapi.rb
|
45
46
|
- examples/simple/call_introspect.rb
|
47
|
+
- examples/simple/properties.rb
|
46
48
|
- examples/utils/listnames.rb
|
47
49
|
- examples/utils/notify.rb
|
48
50
|
- lib/dbus.rb
|
@@ -63,6 +65,7 @@ files:
|
|
63
65
|
- test/bus_driver_test.rb
|
64
66
|
- test/dbus-launch-simple
|
65
67
|
- test/dbus-limited-session.conf
|
68
|
+
- test/property_test.rb
|
66
69
|
- test/server_robustness_test.rb
|
67
70
|
- test/server_test.rb
|
68
71
|
- test/service_newapi.rb
|
@@ -80,7 +83,7 @@ files:
|
|
80
83
|
- README
|
81
84
|
- NEWS
|
82
85
|
has_rdoc: true
|
83
|
-
homepage:
|
86
|
+
homepage: https://trac.luon.net/ruby-dbus
|
84
87
|
licenses: []
|
85
88
|
|
86
89
|
post_install_message:
|