ruby-dbus 0.16.0 → 0.25.0
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.
- checksums.yaml +4 -4
- data/NEWS.md +288 -3
- data/README.md +3 -5
- data/Rakefile +27 -12
- data/VERSION +1 -1
- data/doc/Reference.md +109 -10
- data/examples/doc/_extract_examples +7 -0
- data/examples/no-bus/pulseaudio.rb +50 -0
- data/examples/no-introspect/nm-test.rb +2 -0
- data/examples/no-introspect/tracker-test.rb +3 -1
- data/examples/rhythmbox/playpause.rb +2 -1
- data/examples/service/call_service.rb +2 -1
- data/examples/service/complex-property.rb +21 -0
- data/examples/service/service_newapi.rb +3 -3
- data/examples/simple/call_introspect.rb +1 -0
- data/examples/simple/get_id.rb +6 -3
- data/examples/simple/properties.rb +2 -0
- data/examples/utils/listnames.rb +10 -1
- data/examples/utils/notify.rb +1 -0
- data/lib/dbus/api_options.rb +9 -0
- data/lib/dbus/auth.rb +307 -217
- data/lib/dbus/bus.rb +155 -588
- data/lib/dbus/bus_name.rb +12 -8
- data/lib/dbus/connection.rb +363 -0
- data/lib/dbus/core_ext/class/attribute.rb +1 -1
- data/lib/dbus/data.rb +821 -0
- data/lib/dbus/emits_changed_signal.rb +83 -0
- data/lib/dbus/error.rb +4 -2
- data/lib/dbus/introspect.rb +133 -31
- data/lib/dbus/logger.rb +6 -3
- data/lib/dbus/main.rb +66 -0
- data/lib/dbus/marshall.rb +247 -296
- data/lib/dbus/matchrule.rb +16 -16
- data/lib/dbus/message.rb +66 -57
- data/lib/dbus/message_queue.rb +40 -25
- data/lib/dbus/node_tree.rb +105 -0
- data/lib/dbus/object.rb +442 -33
- data/lib/dbus/object_manager.rb +61 -0
- data/lib/dbus/object_path.rb +11 -6
- data/lib/dbus/object_server.rb +149 -0
- data/lib/dbus/org.freedesktop.DBus.xml +97 -0
- data/lib/dbus/platform.rb +26 -0
- data/lib/dbus/proxy_object.rb +30 -11
- data/lib/dbus/proxy_object_factory.rb +13 -7
- data/lib/dbus/proxy_object_interface.rb +63 -30
- data/lib/dbus/proxy_service.rb +107 -0
- data/lib/dbus/raw_message.rb +91 -0
- data/lib/dbus/type.rb +319 -86
- data/lib/dbus/xml.rb +40 -19
- data/lib/dbus.rb +28 -17
- data/ruby-dbus.gemspec +13 -6
- data/spec/async_spec.rb +2 -0
- data/spec/auth_spec.rb +225 -0
- data/spec/binding_spec.rb +2 -0
- data/spec/bus_and_xml_backend_spec.rb +5 -1
- data/spec/bus_connection_spec.rb +93 -0
- data/spec/bus_name_spec.rb +3 -1
- data/spec/bus_spec.rb +2 -0
- data/spec/byte_array_spec.rb +2 -0
- data/spec/client_robustness_spec.rb +4 -2
- data/spec/connection_spec.rb +37 -0
- data/spec/coverage_helper.rb +39 -0
- data/spec/data/marshall.yaml +1667 -0
- data/spec/data_spec.rb +673 -0
- data/spec/dbus_spec.rb +22 -0
- data/spec/emits_changed_signal_spec.rb +58 -0
- data/spec/err_msg_spec.rb +2 -0
- data/spec/introspect_xml_parser_spec.rb +2 -0
- data/spec/introspection_spec.rb +2 -0
- data/spec/main_loop_spec.rb +17 -1
- data/spec/message_spec.rb +21 -0
- data/spec/mock-service/cockpit-dbustests.rb +29 -0
- data/spec/mock-service/com.redhat.Cockpit.DBusTests.xml +180 -0
- data/spec/mock-service/org.ruby.service.service +4 -0
- data/spec/mock-service/org.rubygems.ruby_dbus.DBusTests.service +4 -0
- data/spec/{service_newapi.rb → mock-service/spaghetti-monster.rb} +122 -75
- data/spec/node_spec.rb +65 -0
- data/spec/object_manager_spec.rb +33 -0
- data/spec/object_path_spec.rb +3 -0
- data/spec/object_server_spec.rb +138 -0
- data/spec/object_spec.rb +194 -0
- data/spec/packet_marshaller_spec.rb +41 -0
- data/spec/packet_unmarshaller_spec.rb +248 -0
- data/spec/platform_spec.rb +14 -0
- data/spec/property_spec.rb +214 -12
- data/spec/proxy_object_interface_spec.rb +35 -0
- data/spec/proxy_object_spec.rb +2 -0
- data/spec/{bus_driver_spec.rb → proxy_service_spec.rb} +15 -8
- data/spec/raw_message_spec.rb +32 -0
- data/spec/server_robustness_spec.rb +20 -6
- data/spec/session_bus_spec.rb +36 -1
- data/spec/session_bus_spec_manual.rb +2 -0
- data/spec/signal_spec.rb +16 -3
- data/spec/spec_helper.rb +25 -33
- data/spec/thread_safety_spec.rb +55 -12
- data/spec/tools/dbus-launch-simple +9 -6
- data/spec/tools/dbus-limited-session.conf +32 -0
- data/spec/tools/test_env +26 -6
- data/spec/type_spec.rb +214 -6
- data/spec/value_spec.rb +16 -1
- data/spec/variant_spec.rb +4 -2
- data/spec/zzz_quit_spec.rb +16 -0
- metadata +92 -20
- data/examples/gdbus/gdbus +0 -257
- data/examples/gdbus/gdbus.glade +0 -98
- data/examples/gdbus/launch.sh +0 -4
- data/spec/server_spec.rb +0 -53
- data/spec/tools/test_server +0 -39
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
2
4
|
#
|
|
3
5
|
# Trivial network interface lister using NetworkManager.
|
|
4
6
|
# NetworkManager does not support introspection, so the api is not that sexy.
|
|
@@ -11,4 +13,4 @@ tracker_service = bus.service("org.freedesktop.Tracker")
|
|
|
11
13
|
tracker_manager = tracker_service.object("/org/freedesktop/tracker")
|
|
12
14
|
poi = DBus::ProxyObjectInterface.new(tracker_manager, "org.freedesktop.Tracker.Files")
|
|
13
15
|
poi.define_method("GetMetadataForFilesInFolder", "in live_query_id:i, in uri:s, in fields:as, out values:aas")
|
|
14
|
-
p poi.GetMetadataForFilesInFolder(-1, ENV["HOME"]
|
|
16
|
+
p poi.GetMetadataForFilesInFolder(-1, "#{ENV["HOME"]}/Desktop", ["File:Name", "File:Size"])
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
require "dbus"
|
|
4
5
|
bus = DBus::SessionBus.instance
|
|
@@ -13,7 +14,7 @@ mr.type = "signal"
|
|
|
13
14
|
mr.interface = "org.gnome.Rhythmbox.Player"
|
|
14
15
|
mr.path = "/org/gnome/Rhythmbox/Player"
|
|
15
16
|
bus.add_match(mr) do |msg, first_param|
|
|
16
|
-
print msg.member
|
|
17
|
+
print "#{msg.member} "
|
|
17
18
|
puts first_param
|
|
18
19
|
end
|
|
19
20
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
require "dbus"
|
|
4
5
|
|
|
@@ -14,7 +15,7 @@ player.test_variant(["s", "coucou"])
|
|
|
14
15
|
player.on_signal("SomethingJustHappened") do |u, v|
|
|
15
16
|
puts "SomethingJustHappened: #{u} #{v}"
|
|
16
17
|
end
|
|
17
|
-
player.hello("
|
|
18
|
+
player.hello("Hey", "there!")
|
|
18
19
|
p player["org.ruby.AnotherInterface"].Reverse("Hello world!")
|
|
19
20
|
|
|
20
21
|
main = DBus::Main.new
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "dbus"
|
|
5
|
+
|
|
6
|
+
# Complex property
|
|
7
|
+
class Test < DBus::Object
|
|
8
|
+
dbus_interface "net.vidner.Scratch" do
|
|
9
|
+
dbus_attr_reader :progress, "(stttt)"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def initialize(opath)
|
|
13
|
+
@progress = ["working", 1, 0, 100, 42].freeze
|
|
14
|
+
super(opath)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
bus = DBus::SessionBus.instance
|
|
19
|
+
bus.object_server.export(Test.new("/net/vidner/Scratch"))
|
|
20
|
+
bus.request_name("net.vidner.Scratch")
|
|
21
|
+
DBus::Main.new.tap { |m| m << bus }.run
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
require "dbus"
|
|
4
|
-
require "thread"
|
|
5
5
|
Thread.abort_on_exception = true
|
|
6
6
|
|
|
7
7
|
class Test < DBus::Object
|
|
@@ -31,9 +31,9 @@ class Test < DBus::Object
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
bus = DBus::SessionBus.instance
|
|
34
|
-
service = bus.request_service("org.ruby.service")
|
|
35
34
|
myobj = Test.new("/org/ruby/MyInstance")
|
|
36
|
-
|
|
35
|
+
bus.object_server.export(myobj)
|
|
36
|
+
bus.request_name("org.ruby.service")
|
|
37
37
|
|
|
38
38
|
Thread.new do
|
|
39
39
|
i = 0
|
data/examples/simple/get_id.rb
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
#! /usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
# find the library without external help
|
|
4
|
-
$LOAD_PATH.unshift File.expand_path("
|
|
5
|
+
$LOAD_PATH.unshift File.expand_path("../../lib", __dir__)
|
|
5
6
|
|
|
6
7
|
require "dbus"
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
busname = ARGV.fetch(0, "system")
|
|
10
|
+
bus = busname == "session" ? DBus::SessionBus.instance : DBus::SystemBus.instance
|
|
11
|
+
|
|
9
12
|
driver_svc = bus["org.freedesktop.DBus"]
|
|
10
13
|
# p driver_svc
|
|
11
14
|
driver_obj = driver_svc["/"]
|
|
@@ -14,4 +17,4 @@ driver_ifc = driver_obj["org.freedesktop.DBus"]
|
|
|
14
17
|
# p driver_ifc
|
|
15
18
|
|
|
16
19
|
bus_id = driver_ifc.GetId
|
|
17
|
-
puts "The
|
|
20
|
+
puts "The #{busname} bus id is #{bus_id}"
|
data/examples/utils/listnames.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
require "dbus"
|
|
4
5
|
|
|
@@ -7,4 +8,12 @@ d = if ARGV.member?("--system")
|
|
|
7
8
|
else
|
|
8
9
|
DBus::SessionBus.instance
|
|
9
10
|
end
|
|
10
|
-
d.proxy.ListNames[0].each
|
|
11
|
+
d.proxy.ListNames[0].each do |n|
|
|
12
|
+
puts "\t#{n}"
|
|
13
|
+
qns = d.proxy.ListQueuedOwners(n)[0]
|
|
14
|
+
next if qns.size == 1 && qns.first == n
|
|
15
|
+
|
|
16
|
+
qns.each do |qn|
|
|
17
|
+
puts "\t\t#{qn}"
|
|
18
|
+
end
|
|
19
|
+
end
|
data/examples/utils/notify.rb
CHANGED
data/lib/dbus/api_options.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
# This file is part of the ruby-dbus project
|
|
2
4
|
# Copyright (C) 2016 Martin Vidner
|
|
3
5
|
#
|
|
@@ -9,6 +11,13 @@
|
|
|
9
11
|
module DBus
|
|
10
12
|
class ApiOptions
|
|
11
13
|
# https://github.com/mvidner/ruby-dbus/issues/30
|
|
14
|
+
# @return [Boolean]
|
|
15
|
+
# - true: a proxy (client-side) method will return an array
|
|
16
|
+
# even for the most common case where the method is declared
|
|
17
|
+
# to have only one 'out parameter'
|
|
18
|
+
# - false: a proxy (client-side) method will return
|
|
19
|
+
# - one value for the only 'out parameter'
|
|
20
|
+
# - an array with more 'out parameters'
|
|
12
21
|
attr_accessor :proxy_method_returns_array
|
|
13
22
|
|
|
14
23
|
A0 = ApiOptions.new
|