ruby-dbus-openplacos 0.7.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/NEWS +16 -0
- data/VERSION +1 -1
- data/lib/dbus/bus.rb +2 -0
- data/lib/dbus/export.rb +24 -2
- data/lib/dbus/introspect.rb +2 -2
- data/lib/dbus-openplacos.rb +0 -1
- data/test/async_test.rb +47 -0
- data/test/property_test.rb +9 -0
- data/test/service_newapi.rb +0 -1
- metadata +21 -42
- data/lib/dbus/core_ext/class/attribute.rb +0 -91
- data/lib/dbus/core_ext/kernel/singleton_class.rb +0 -14
- data/lib/dbus/core_ext/module/remove_method.rb +0 -12
data/NEWS
CHANGED
@@ -5,6 +5,22 @@ 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.7.2 - 2012-04-05
|
9
|
+
|
10
|
+
A brown-paper-bag release.
|
11
|
+
|
12
|
+
Bug fixes:
|
13
|
+
* Fixed "undefined local variable or method `continue'" in
|
14
|
+
DBus::Main#run when a service becomes idle (by Ravil Bayramgalin)
|
15
|
+
|
16
|
+
== Ruby D-Bus 0.7.1 - 2012-04-04
|
17
|
+
|
18
|
+
Bug fixes:
|
19
|
+
* Fixed calling asynchronous methods on the default interface (Issue#13,
|
20
|
+
by Eugene Korbut).
|
21
|
+
* Fixed Main#quit to really quit the loop (by Josef Reidinger)
|
22
|
+
* Unbundled files from Active Support (by Bohuslav Kabrda)
|
23
|
+
|
8
24
|
== Ruby D-Bus 0.7.0 - 2011-07-26
|
9
25
|
|
10
26
|
Features:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.2
|
data/lib/dbus/bus.rb
CHANGED
data/lib/dbus/export.rb
CHANGED
@@ -19,8 +19,10 @@ module DBus
|
|
19
19
|
class Object
|
20
20
|
# The path of the object.
|
21
21
|
attr_reader :path
|
22
|
-
# The interfaces that the object supports.
|
23
|
-
|
22
|
+
# The interfaces that the object supports.
|
23
|
+
# intfs: Hash: String => Interface
|
24
|
+
# @@intfs_hash simulates a class attribute by being a hash Class => intfs
|
25
|
+
@@intfs_hash = {DBus::Object => nil}
|
24
26
|
# The service that the object is exported by.
|
25
27
|
attr_writer :service
|
26
28
|
|
@@ -34,6 +36,26 @@ module DBus
|
|
34
36
|
@service = nil
|
35
37
|
end
|
36
38
|
|
39
|
+
def self.intfs
|
40
|
+
if self.equal? DBus::Object
|
41
|
+
@@intfs_hash[DBus::Object]
|
42
|
+
else
|
43
|
+
@@intfs_hash[self] || self.superclass.intfs
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.intfs= param
|
48
|
+
@@intfs_hash[self] = param
|
49
|
+
end
|
50
|
+
|
51
|
+
def intfs
|
52
|
+
self.class.intfs
|
53
|
+
end
|
54
|
+
|
55
|
+
def intfs= param
|
56
|
+
self.class.intfs = param
|
57
|
+
end
|
58
|
+
|
37
59
|
# State that the object implements the given _intf_.
|
38
60
|
def implements(intf)
|
39
61
|
# use a setter
|
data/lib/dbus/introspect.rb
CHANGED
@@ -497,10 +497,10 @@ module DBus
|
|
497
497
|
|
498
498
|
# Handles all unkown methods, mostly to route method calls to the
|
499
499
|
# default interface.
|
500
|
-
def method_missing(name, *args)
|
500
|
+
def method_missing(name, *args, &reply_handler)
|
501
501
|
if @default_iface and has_iface?(@default_iface)
|
502
502
|
begin
|
503
|
-
@interfaces[@default_iface].method(name).call(*args)
|
503
|
+
@interfaces[@default_iface].method(name).call(*args, &reply_handler)
|
504
504
|
rescue NameError => e
|
505
505
|
# interesting, foo.method("unknown")
|
506
506
|
# raises NameError, not NoMethodError
|
data/lib/dbus-openplacos.rb
CHANGED
data/test/async_test.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# Test the binding of dbus concepts to ruby concepts
|
3
|
+
require "test/unit"
|
4
|
+
require "dbus"
|
5
|
+
|
6
|
+
class AsyncTest < Test::Unit::TestCase
|
7
|
+
def setup
|
8
|
+
@bus = DBus::ASessionBus.new
|
9
|
+
@svc = @bus.service("org.ruby.service")
|
10
|
+
@obj = @svc.object "/org/ruby/MyInstance"
|
11
|
+
@obj.introspect
|
12
|
+
@obj.default_iface = "org.ruby.SampleInterface"
|
13
|
+
end
|
14
|
+
|
15
|
+
# https://github.com/mvidner/ruby-dbus/issues/13
|
16
|
+
def test_async_call_to_default_interface
|
17
|
+
loop = DBus::Main.new
|
18
|
+
loop << @bus
|
19
|
+
|
20
|
+
immediate_answer = @obj.the_answer do |msg, retval|
|
21
|
+
assert_equal 42, retval
|
22
|
+
loop.quit
|
23
|
+
end
|
24
|
+
|
25
|
+
assert_nil immediate_answer
|
26
|
+
|
27
|
+
# wait for the async reply
|
28
|
+
loop.run
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_async_call_to_explicit_interface
|
32
|
+
loop = DBus::Main.new
|
33
|
+
loop << @bus
|
34
|
+
|
35
|
+
ifc = @obj["org.ruby.AnotherInterface"]
|
36
|
+
immediate_answer = ifc.Reverse("abcd") do |msg, retval|
|
37
|
+
assert_equal "dcba", retval
|
38
|
+
loop.quit
|
39
|
+
end
|
40
|
+
|
41
|
+
assert_nil immediate_answer
|
42
|
+
|
43
|
+
# wait for the async reply
|
44
|
+
loop.run
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
data/test/property_test.rb
CHANGED
@@ -27,6 +27,15 @@ class PropertyTest < Test::Unit::TestCase
|
|
27
27
|
assert_equal "VALUE", @iface["ReadOrWriteMe"]
|
28
28
|
end
|
29
29
|
|
30
|
+
# https://github.com/mvidner/ruby-dbus/pull/19
|
31
|
+
def test_service_select_timeout
|
32
|
+
@iface["ReadOrWriteMe"] = "VALUE"
|
33
|
+
assert_equal "VALUE", @iface["ReadOrWriteMe"]
|
34
|
+
# wait for the service to become idle
|
35
|
+
sleep 6
|
36
|
+
assert_equal "VALUE", @iface["ReadOrWriteMe"], "Property value changed; perhaps the service died and got restarted"
|
37
|
+
end
|
38
|
+
|
30
39
|
def test_property_nonwriting
|
31
40
|
e = assert_raises DBus::Error do
|
32
41
|
@iface["ReadMe"] = "WROTE"
|
data/test/service_newapi.rb
CHANGED
metadata
CHANGED
@@ -1,34 +1,25 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-dbus-openplacos
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 7
|
8
|
-
- 0
|
9
|
-
version: 0.7.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.7.2
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Openplacos Team
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
date: 2012-03-10 00:00:00 +01:00
|
18
|
-
default_executable:
|
12
|
+
date: 2012-05-02 00:00:00.000000000 Z
|
19
13
|
dependencies: []
|
20
|
-
|
21
14
|
description:
|
22
15
|
email:
|
23
16
|
executables: []
|
24
|
-
|
25
17
|
extensions: []
|
26
|
-
|
27
|
-
extra_rdoc_files:
|
18
|
+
extra_rdoc_files:
|
28
19
|
- COPYING
|
29
20
|
- README
|
30
21
|
- NEWS
|
31
|
-
files:
|
22
|
+
files:
|
32
23
|
- Rakefile
|
33
24
|
- VERSION
|
34
25
|
- doc/tutorial/index.markdown
|
@@ -47,9 +38,6 @@ files:
|
|
47
38
|
- lib/dbus-openplacos.rb
|
48
39
|
- lib/dbus/auth.rb
|
49
40
|
- lib/dbus/bus.rb
|
50
|
-
- lib/dbus/core_ext/class/attribute.rb
|
51
|
-
- lib/dbus/core_ext/kernel/singleton_class.rb
|
52
|
-
- lib/dbus/core_ext/module/remove_method.rb
|
53
41
|
- lib/dbus/error.rb
|
54
42
|
- lib/dbus/export.rb
|
55
43
|
- lib/dbus/introspect.rb
|
@@ -58,6 +46,7 @@ files:
|
|
58
46
|
- lib/dbus/message.rb
|
59
47
|
- lib/dbus/type.rb
|
60
48
|
- ruby-dbus-openplacos.gemspec
|
49
|
+
- test/async_test.rb
|
61
50
|
- test/binding_test.rb
|
62
51
|
- test/bus_driver_test.rb
|
63
52
|
- test/bus_test.rb
|
@@ -81,39 +70,29 @@ files:
|
|
81
70
|
- COPYING
|
82
71
|
- README
|
83
72
|
- NEWS
|
84
|
-
has_rdoc: true
|
85
73
|
homepage: https://github.com/flagos/ruby-dbus
|
86
|
-
licenses:
|
74
|
+
licenses:
|
87
75
|
- LGPL v2.1
|
88
76
|
post_install_message:
|
89
77
|
rdoc_options: []
|
90
|
-
|
91
|
-
require_paths:
|
78
|
+
require_paths:
|
92
79
|
- lib
|
93
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
80
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
94
81
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
segments:
|
99
|
-
- 1
|
100
|
-
- 8
|
101
|
-
- 7
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
102
85
|
version: 1.8.7
|
103
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
87
|
none: false
|
105
|
-
requirements:
|
106
|
-
- -
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
|
109
|
-
- 0
|
110
|
-
version: "0"
|
88
|
+
requirements:
|
89
|
+
- - ! '>='
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
111
92
|
requirements: []
|
112
|
-
|
113
93
|
rubyforge_project:
|
114
|
-
rubygems_version: 1.
|
94
|
+
rubygems_version: 1.8.23
|
115
95
|
signing_key:
|
116
96
|
specification_version: 3
|
117
97
|
summary: Fork from ruby-dbus
|
118
98
|
test_files: []
|
119
|
-
|
@@ -1,91 +0,0 @@
|
|
1
|
-
# copied from activesupport/core_ext from Rails, MIT license
|
2
|
-
require 'dbus/core_ext/kernel/singleton_class'
|
3
|
-
require 'dbus/core_ext/module/remove_method'
|
4
|
-
|
5
|
-
class Class
|
6
|
-
# Declare a class-level attribute whose value is inheritable by subclasses.
|
7
|
-
# Subclasses can change their own value and it will not impact parent class.
|
8
|
-
#
|
9
|
-
# class Base
|
10
|
-
# class_attribute :setting
|
11
|
-
# end
|
12
|
-
#
|
13
|
-
# class Subclass < Base
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
# Base.setting = true
|
17
|
-
# Subclass.setting # => true
|
18
|
-
# Subclass.setting = false
|
19
|
-
# Subclass.setting # => false
|
20
|
-
# Base.setting # => true
|
21
|
-
#
|
22
|
-
# In the above case as long as Subclass does not assign a value to setting
|
23
|
-
# by performing <tt>Subclass.setting = _something_ </tt>, <tt>Subclass.setting</tt>
|
24
|
-
# would read value assigned to parent class. Once Subclass assigns a value then
|
25
|
-
# the value assigned by Subclass would be returned.
|
26
|
-
#
|
27
|
-
# This matches normal Ruby method inheritance: think of writing an attribute
|
28
|
-
# on a subclass as overriding the reader method. However, you need to be aware
|
29
|
-
# when using +class_attribute+ with mutable structures as +Array+ or +Hash+.
|
30
|
-
# In such cases, you don't want to do changes in places but use setters:
|
31
|
-
#
|
32
|
-
# Base.setting = []
|
33
|
-
# Base.setting # => []
|
34
|
-
# Subclass.setting # => []
|
35
|
-
#
|
36
|
-
# # Appending in child changes both parent and child because it is the same object:
|
37
|
-
# Subclass.setting << :foo
|
38
|
-
# Base.setting # => [:foo]
|
39
|
-
# Subclass.setting # => [:foo]
|
40
|
-
#
|
41
|
-
# # Use setters to not propagate changes:
|
42
|
-
# Base.setting = []
|
43
|
-
# Subclass.setting += [:foo]
|
44
|
-
# Base.setting # => []
|
45
|
-
# Subclass.setting # => [:foo]
|
46
|
-
#
|
47
|
-
# For convenience, a query method is defined as well:
|
48
|
-
#
|
49
|
-
# Subclass.setting? # => false
|
50
|
-
#
|
51
|
-
# Instances may overwrite the class value in the same way:
|
52
|
-
#
|
53
|
-
# Base.setting = true
|
54
|
-
# object = Base.new
|
55
|
-
# object.setting # => true
|
56
|
-
# object.setting = false
|
57
|
-
# object.setting # => false
|
58
|
-
# Base.setting # => true
|
59
|
-
#
|
60
|
-
# To opt out of the instance writer method, pass :instance_writer => false.
|
61
|
-
#
|
62
|
-
# object.setting = false # => NoMethodError
|
63
|
-
def class_attribute(*attrs)
|
64
|
-
instance_writer = !attrs.last.is_a?(Hash) || attrs.pop[:instance_writer]
|
65
|
-
|
66
|
-
attrs.each do |name|
|
67
|
-
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
68
|
-
def self.#{name}() nil end
|
69
|
-
def self.#{name}?() !!#{name} end
|
70
|
-
|
71
|
-
def self.#{name}=(val)
|
72
|
-
singleton_class.class_eval do
|
73
|
-
remove_possible_method(:#{name})
|
74
|
-
define_method(:#{name}) { val }
|
75
|
-
end
|
76
|
-
val
|
77
|
-
end
|
78
|
-
|
79
|
-
def #{name}
|
80
|
-
defined?(@#{name}) ? @#{name} : singleton_class.#{name}
|
81
|
-
end
|
82
|
-
|
83
|
-
def #{name}?
|
84
|
-
!!#{name}
|
85
|
-
end
|
86
|
-
RUBY
|
87
|
-
|
88
|
-
attr_writer name if instance_writer
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# copied from activesupport/core_ext from Rails, MIT license
|
2
|
-
module Kernel
|
3
|
-
# Returns the object's singleton class.
|
4
|
-
def singleton_class
|
5
|
-
class << self
|
6
|
-
self
|
7
|
-
end
|
8
|
-
end unless respond_to?(:singleton_class) # exists in 1.9.2
|
9
|
-
|
10
|
-
# class_eval on an object acts like singleton_class.class_eval.
|
11
|
-
def class_eval(*args, &block)
|
12
|
-
singleton_class.class_eval(*args, &block)
|
13
|
-
end
|
14
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
# copied from activesupport/core_ext from Rails, MIT license
|
2
|
-
class Module
|
3
|
-
def remove_possible_method(method)
|
4
|
-
remove_method(method)
|
5
|
-
rescue NameError
|
6
|
-
end
|
7
|
-
|
8
|
-
def redefine_method(method, &block)
|
9
|
-
remove_possible_method(method)
|
10
|
-
define_method(method, &block)
|
11
|
-
end
|
12
|
-
end
|