ruby-dbus 0.12.0 → 0.13.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 +344 -0
- data/Rakefile +21 -15
- data/VERSION +1 -1
- data/doc/Reference.md +26 -37
- data/examples/doc/_extract_examples +4 -4
- data/examples/gdbus/gdbus +40 -39
- data/examples/no-introspect/nm-test.rb +1 -3
- data/examples/no-introspect/tracker-test.rb +2 -4
- data/examples/rhythmbox/playpause.rb +1 -2
- data/examples/service/call_service.rb +0 -3
- data/examples/service/service_newapi.rb +3 -4
- data/examples/simple/call_introspect.rb +0 -3
- data/examples/simple/get_id.rb +1 -3
- data/examples/simple/properties.rb +3 -4
- data/examples/utils/listnames.rb +6 -7
- data/examples/utils/notify.rb +3 -5
- data/lib/dbus.rb +8 -20
- data/lib/dbus/auth.rb +59 -61
- data/lib/dbus/bus.rb +86 -97
- data/lib/dbus/error.rb +1 -1
- data/lib/dbus/export.rb +20 -18
- data/lib/dbus/introspect.rb +26 -28
- data/lib/dbus/logger.rb +1 -1
- data/lib/dbus/marshall.rb +72 -74
- data/lib/dbus/matchrule.rb +22 -26
- data/lib/dbus/message.rb +24 -33
- data/lib/dbus/message_queue.rb +30 -30
- data/lib/dbus/proxy_object.rb +34 -30
- data/lib/dbus/proxy_object_factory.rb +5 -2
- data/lib/dbus/proxy_object_interface.rb +10 -8
- data/lib/dbus/type.rb +154 -156
- data/lib/dbus/xml.rb +22 -16
- data/ruby-dbus.gemspec +15 -3
- data/spec/async_spec.rb +2 -4
- data/spec/binding_spec.rb +1 -5
- data/spec/bus_and_xml_backend_spec.rb +6 -9
- data/spec/bus_spec.rb +1 -1
- data/spec/byte_array_spec.rb +0 -2
- data/spec/err_msg_spec.rb +13 -10
- data/spec/introspect_xml_parser_spec.rb +2 -2
- data/spec/introspection_spec.rb +1 -1
- data/spec/main_loop_spec.rb +4 -5
- data/spec/property_spec.rb +0 -3
- data/spec/proxy_object_spec.rb +42 -0
- data/spec/server_robustness_spec.rb +0 -2
- data/spec/service_newapi.rb +51 -41
- data/spec/session_bus_spec.rb +6 -7
- data/spec/signal_spec.rb +2 -3
- data/spec/spec_helper.rb +28 -24
- data/spec/thread_safety_spec.rb +1 -2
- data/spec/type_spec.rb +2 -2
- data/spec/value_spec.rb +7 -10
- data/spec/variant_spec.rb +15 -16
- metadata +60 -3
- data/NEWS +0 -279
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
if ARGV[0].nil?
|
3
|
-
puts "Usage: #{$
|
3
|
+
puts "Usage: #{$PROGRAM_NAME} file.md"
|
4
4
|
exit
|
5
5
|
end
|
6
6
|
|
@@ -11,7 +11,7 @@ File.open(ARGV[0]) do |f|
|
|
11
11
|
f.each_line do |line|
|
12
12
|
case line
|
13
13
|
when /^#+ *(.*)/
|
14
|
-
new_title =
|
14
|
+
new_title = Regexp.last_match(1)
|
15
15
|
|
16
16
|
# write previous example
|
17
17
|
unless example.empty?
|
@@ -22,7 +22,7 @@ File.open(ARGV[0]) do |f|
|
|
22
22
|
File.open("#{basename}.rb", "w") do |e|
|
23
23
|
e.write setup
|
24
24
|
e.write example
|
25
|
-
e.chmod(
|
25
|
+
e.chmod(0o755)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
@@ -31,7 +31,7 @@ File.open(ARGV[0]) do |f|
|
|
31
31
|
title = new_title
|
32
32
|
example = ""
|
33
33
|
when /^ (.*)/
|
34
|
-
example <<
|
34
|
+
example << Regexp.last_match(1) << "\n"
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
data/examples/gdbus/gdbus
CHANGED
@@ -5,19 +5,20 @@
|
|
5
5
|
# stuff.
|
6
6
|
# -- Arnaud
|
7
7
|
|
8
|
-
require
|
8
|
+
require "dbus"
|
9
9
|
require "gtk2"
|
10
10
|
|
11
|
-
|
11
|
+
ENABLE_SYSTEM = false
|
12
12
|
|
13
13
|
class MethodCallWindow
|
14
14
|
def initialize(pwindow, intf, meth)
|
15
|
-
@intf
|
16
|
-
@
|
15
|
+
@intf = intf
|
16
|
+
@meth = meth
|
17
|
+
@entries = []
|
17
18
|
@dialog = Gtk::Dialog.new(meth.name, pwindow,
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
Gtk::Dialog::MODAL | Gtk::Dialog::NO_SEPARATOR,
|
20
|
+
[Gtk::Stock::OK, Gtk::Dialog::RESPONSE_OK],
|
21
|
+
[Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_CANCEL])
|
21
22
|
|
22
23
|
@meth.params.each do |param|
|
23
24
|
shbox = Gtk::HBox.new(true, 0)
|
@@ -61,14 +62,13 @@ class MethodCallWindow
|
|
61
62
|
end
|
62
63
|
m.add_param(param[1], data)
|
63
64
|
end
|
64
|
-
bus.
|
65
|
+
bus.send_sync_or_async(m) do |retm|
|
65
66
|
if retm.is_a?(DBus::Error)
|
66
67
|
puts "Error: #{retm.inspect}"
|
67
68
|
else
|
68
69
|
puts "Method #{m.member} returns: #{retm.params.inspect}"
|
69
70
|
end
|
70
71
|
end
|
71
|
-
bus.send(m.marshall)
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
@@ -78,13 +78,13 @@ class DBusUI
|
|
78
78
|
@glade << "gdbus.glade"
|
79
79
|
|
80
80
|
@sessiontreeview = @glade.get_object("sessiontreeview")
|
81
|
-
setup_treeview_renderer(@sessiontreeview,
|
81
|
+
setup_treeview_renderer(@sessiontreeview, "D-Bus Objects")
|
82
82
|
@sessiontreeview.selection.signal_connect("changed") do |selection|
|
83
83
|
on_treeview_selection_changed(selection)
|
84
84
|
end
|
85
85
|
|
86
86
|
@systemtreeview = @glade.get_object("systemtreeview")
|
87
|
-
setup_treeview_renderer(@systemtreeview,
|
87
|
+
setup_treeview_renderer(@systemtreeview, "D-Bus Objects")
|
88
88
|
@systemtreeview.selection.signal_connect("changed") do |selection|
|
89
89
|
on_treeview_selection_changed(selection)
|
90
90
|
end
|
@@ -92,6 +92,9 @@ class DBusUI
|
|
92
92
|
@methsigtreeview = @glade.get_object("methsigtreeview")
|
93
93
|
# ierk
|
94
94
|
setup_methodview_renderer(@methsigtreeview)
|
95
|
+
@methsigtreeview.signal_connect("row-activated") do |view, path, column|
|
96
|
+
on_method_activated(view, path, column)
|
97
|
+
end
|
95
98
|
|
96
99
|
@window = @glade.get_object("window1")
|
97
100
|
@window.show_all
|
@@ -101,10 +104,10 @@ class DBusUI
|
|
101
104
|
def beautify_method(meth)
|
102
105
|
# Damn, this need to be rewritten :p
|
103
106
|
s = meth.name + "("
|
104
|
-
if meth.
|
107
|
+
if meth.is_a?(DBus::Method)
|
105
108
|
s += (meth.params.collect { |a| "in #{a[0]}:#{a[1]}" } +
|
106
109
|
meth.rets.collect { |a| "out #{a[0]}:#{a[1]}" }).join(", ")
|
107
|
-
elsif meth.
|
110
|
+
elsif meth.is_a?(DBus::Signal)
|
108
111
|
s += (meth.params.collect { |a| "in #{a[0]}:#{a[1]}" }).join(", ")
|
109
112
|
end
|
110
113
|
s += ")"
|
@@ -117,7 +120,7 @@ class DBusUI
|
|
117
120
|
DBus::ProxyObjectInterface)
|
118
121
|
@methsigtreeview.model = model
|
119
122
|
if selected
|
120
|
-
if intf = selected[1]
|
123
|
+
if (intf = selected[1])
|
121
124
|
intf.methods.keys.sort.each do |mi|
|
122
125
|
m = intf.methods[mi]
|
123
126
|
subiter = model.append
|
@@ -138,11 +141,10 @@ class DBusUI
|
|
138
141
|
end
|
139
142
|
end
|
140
143
|
|
141
|
-
def on_method_activated(view, path,
|
144
|
+
def on_method_activated(view, path, _column)
|
142
145
|
name = view.model.get_iter(path)[0]
|
143
146
|
puts "Clicked on: #{name.inspect}"
|
144
147
|
type = view.model.get_iter(path)[1]
|
145
|
-
intf = view.model.get_iter(path)[2]
|
146
148
|
if type == "M"
|
147
149
|
method = view.model.get_iter(path)[2]
|
148
150
|
intf = view.model.get_iter(path)[3]
|
@@ -151,34 +153,33 @@ class DBusUI
|
|
151
153
|
signal = view.model.get_iter(path)[2]
|
152
154
|
intf = view.model.get_iter(path)[3]
|
153
155
|
mr = DBus::MatchRule.new.from_signal(intf, signal)
|
154
|
-
puts "*** Registering matchrule: #{mr
|
156
|
+
puts "*** Registering matchrule: #{mr} ***"
|
155
157
|
intf.object.bus.add_match(mr) do |sig|
|
156
|
-
puts "Got #{sig.member}(#{sig.params.join(
|
158
|
+
puts "Got #{sig.member}(#{sig.params.join(",")})"
|
157
159
|
end
|
158
160
|
end
|
159
161
|
end
|
160
162
|
|
161
|
-
def on_sessiontreeview_row_activated(view, path,
|
163
|
+
def on_sessiontreeview_row_activated(view, path, _column)
|
162
164
|
name = view.model.get_iter(path)[0]
|
163
165
|
puts "Clicked on: #{name.inspect}"
|
164
|
-
intf = view.model.get_iter(path)[1]
|
165
166
|
end
|
166
167
|
|
167
|
-
def on_window_delete_event(
|
168
|
+
def on_window_delete_event(_window, _event)
|
168
169
|
Gtk.main_quit
|
169
170
|
end
|
170
171
|
|
171
172
|
def setup_methodview_renderer(treeview)
|
172
173
|
renderer = Gtk::CellRendererText.new
|
173
|
-
|
174
|
-
col_offset = treeview.insert_column(-1, "Name", renderer,
|
174
|
+
_col_offset = treeview.insert_column(-1, "T", renderer, "text" => 1)
|
175
|
+
col_offset = treeview.insert_column(-1, "Name", renderer, "text" => 0)
|
175
176
|
column = treeview.get_column(col_offset - 1)
|
176
177
|
column.clickable = true
|
177
178
|
end
|
178
179
|
|
179
180
|
def setup_treeview_renderer(treeview, str)
|
180
181
|
renderer = Gtk::CellRendererText.new
|
181
|
-
col_offset = treeview.insert_column(-1, str, renderer,
|
182
|
+
col_offset = treeview.insert_column(-1, str, renderer, "text" => 0)
|
182
183
|
column = treeview.get_column(col_offset - 1)
|
183
184
|
column.clickable = true
|
184
185
|
end
|
@@ -196,15 +197,15 @@ class DBusUI
|
|
196
197
|
def start_buses
|
197
198
|
# call glibize to get dbus messages from the glib mainloop
|
198
199
|
DBus::SessionBus.instance.glibize
|
199
|
-
DBus::SystemBus.instance.glibize if
|
200
|
+
DBus::SystemBus.instance.glibize if ENABLE_SYSTEM
|
200
201
|
|
201
|
-
DBus::SessionBus.instance.proxy.ListNames do |
|
202
|
+
DBus::SessionBus.instance.proxy.ListNames do |_msg, names|
|
202
203
|
fill_treeview(DBus::SessionBus.instance, @sessiontreeview, names)
|
203
204
|
end
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
205
|
+
|
206
|
+
return unless ENABLE_SYSTEM
|
207
|
+
DBus::SystemBus.instance.proxy.ListNames do |_msg, names|
|
208
|
+
fill_treeview(DBus::SystemBus.instance, @systemtreeview, names)
|
208
209
|
end
|
209
210
|
end
|
210
211
|
|
@@ -214,18 +215,18 @@ class DBusUI
|
|
214
215
|
subiter[0] = key
|
215
216
|
walk_node(model, subiter, val)
|
216
217
|
end
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
218
|
+
|
219
|
+
return if node.object.nil?
|
220
|
+
node.object.interfaces.sort.each do |ifname|
|
221
|
+
subiter = model.append(iter)
|
222
|
+
subiter[0] = ifname
|
223
|
+
subiter[1] = node.object[ifname]
|
223
224
|
end
|
224
225
|
end
|
225
226
|
|
226
227
|
def introspect_services(model, bus)
|
227
228
|
el = @introspect_array.shift
|
228
|
-
if
|
229
|
+
if !(el =~ /^:/)
|
229
230
|
iter = model.append(nil)
|
230
231
|
iter[0] = el
|
231
232
|
puts "introspecting: #{el}"
|
@@ -238,14 +239,14 @@ class DBusUI
|
|
238
239
|
end
|
239
240
|
end
|
240
241
|
|
241
|
-
|
242
|
+
!@introspect_array.empty?
|
242
243
|
end
|
243
244
|
|
244
245
|
def fill_treeview(bus, treeview, array)
|
245
246
|
model = Gtk::TreeStore.new(String, DBus::ProxyObjectInterface)
|
246
247
|
treeview.model = model
|
247
248
|
@introspect_array = array.sort
|
248
|
-
Gtk
|
249
|
+
Gtk.idle_add { introspect_services(model, bus) }
|
249
250
|
end
|
250
251
|
|
251
252
|
def main
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# Trivial network interface lister using NetworkManager.
|
4
4
|
# NetworkManager does not support introspection, so the api is not that sexy.
|
5
5
|
|
6
|
-
require
|
6
|
+
require "dbus"
|
7
7
|
|
8
8
|
bus = DBus::SystemBus.instance
|
9
9
|
|
@@ -17,5 +17,3 @@ rescue Exception
|
|
17
17
|
poi.define_method("GetDevices", "") # NM 0.7
|
18
18
|
p poi.GetDevices
|
19
19
|
end
|
20
|
-
|
21
|
-
|
@@ -3,7 +3,7 @@
|
|
3
3
|
# Trivial network interface lister using NetworkManager.
|
4
4
|
# NetworkManager does not support introspection, so the api is not that sexy.
|
5
5
|
|
6
|
-
require
|
6
|
+
require "dbus"
|
7
7
|
|
8
8
|
bus = DBus::SessionBus.instance
|
9
9
|
|
@@ -11,6 +11,4 @@ tracker_service = bus.service("org.freedesktop.Tracker")
|
|
11
11
|
tracker_manager = tracker_service.object("/org/freedesktop/tracker")
|
12
12
|
poi = DBus::ProxyObjectInterface.new(tracker_manager, "org.freedesktop.Tracker.Files")
|
13
13
|
poi.define_method("GetMetadataForFilesInFolder", "in live_query_id:i, in uri:s, in fields:as, out values:aas")
|
14
|
-
p poi.GetMetadataForFilesInFolder(-1, ENV[
|
15
|
-
|
16
|
-
|
14
|
+
p poi.GetMetadataForFilesInFolder(-1, ENV["HOME"] + "/Desktop", ["File:Name", "File:Size"])
|
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
3
|
+
require "dbus"
|
4
4
|
bus = DBus::SessionBus.instance
|
5
5
|
# get a rb object
|
6
6
|
proxy = bus.introspect("org.gnome.Rhythmbox", "/org/gnome/Rhythmbox/Player")
|
@@ -22,4 +22,3 @@ proxyi.playPause(true)
|
|
22
22
|
main = DBus::Main.new
|
23
23
|
main << bus
|
24
24
|
main.run
|
25
|
-
|
@@ -9,8 +9,6 @@ ruby_srv = session_bus.service("org.ruby.service")
|
|
9
9
|
# Get the object from this service
|
10
10
|
player = ruby_srv.object("/org/ruby/MyInstance")
|
11
11
|
|
12
|
-
# Introspect it
|
13
|
-
puts player.introspect
|
14
12
|
player.default_iface = "org.ruby.SampleInterface"
|
15
13
|
player.test_variant(["s", "coucou"])
|
16
14
|
player.on_signal("SomethingJustHappened") do |u, v|
|
@@ -22,4 +20,3 @@ p player["org.ruby.AnotherInterface"].Reverse("Hello world!")
|
|
22
20
|
main = DBus::Main.new
|
23
21
|
main << session_bus
|
24
22
|
main.run
|
25
|
-
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "dbus"
|
4
|
+
require "thread"
|
5
5
|
Thread.abort_on_exception = true
|
6
6
|
|
7
7
|
class Test < DBus::Object
|
@@ -37,7 +37,7 @@ service.export(myobj)
|
|
37
37
|
|
38
38
|
Thread.new do
|
39
39
|
i = 0
|
40
|
-
loop do
|
40
|
+
loop do
|
41
41
|
# Signal emission
|
42
42
|
myobj.SomethingJustHappened("hey", i += 1)
|
43
43
|
sleep(0.5)
|
@@ -48,4 +48,3 @@ puts "listening"
|
|
48
48
|
main = DBus::Main.new
|
49
49
|
main << bus
|
50
50
|
main.run
|
51
|
-
|
@@ -10,8 +10,6 @@ rhythmbox = session_bus.service("org.gnome.Rhythmbox")
|
|
10
10
|
# Get the object from this service
|
11
11
|
player = rhythmbox.object("/org/gnome/Rhythmbox/Player")
|
12
12
|
|
13
|
-
# Introspect it
|
14
|
-
player.introspect
|
15
13
|
if player.has_iface? "org.gnome.Rhythmbox.Player"
|
16
14
|
puts "We have Rhythmbox Player interface"
|
17
15
|
end
|
@@ -31,4 +29,3 @@ end
|
|
31
29
|
main = DBus::Main.new
|
32
30
|
main << session_bus
|
33
31
|
main.run
|
34
|
-
|
data/examples/simple/get_id.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
|
3
3
|
# find the library without external help
|
4
|
-
|
4
|
+
$LOAD_PATH.unshift File.expand_path("../../../lib", __FILE__)
|
5
5
|
|
6
6
|
require "dbus"
|
7
7
|
|
@@ -10,8 +10,6 @@ driver_svc = bus["org.freedesktop.DBus"]
|
|
10
10
|
# p driver_svc
|
11
11
|
driver_obj = driver_svc["/"]
|
12
12
|
# p driver_obj
|
13
|
-
driver_obj.introspect
|
14
|
-
|
15
13
|
driver_ifc = driver_obj["org.freedesktop.DBus"]
|
16
14
|
# p driver_ifc
|
17
15
|
|
@@ -1,10 +1,9 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
|
-
require
|
2
|
+
require "dbus"
|
3
3
|
|
4
4
|
bus = DBus::SystemBus.instance
|
5
5
|
nm_service = bus["org.freedesktop.NetworkManager"]
|
6
|
-
network_manager_object = nm_service
|
7
|
-
network_manager_object.introspect
|
6
|
+
network_manager_object = nm_service["/org/freedesktop/NetworkManager"]
|
8
7
|
nm_iface = network_manager_object["org.freedesktop.NetworkManager"]
|
9
8
|
|
10
9
|
# read a property
|
@@ -16,4 +15,4 @@ else
|
|
16
15
|
end
|
17
16
|
puts "Toggling wireless"
|
18
17
|
# write a property
|
19
|
-
nm_iface["WirelessEnabled"] = !
|
18
|
+
nm_iface["WirelessEnabled"] = !enabled
|
data/examples/utils/listnames.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
3
|
+
require "dbus"
|
4
4
|
|
5
5
|
d = if ARGV.member?("--system")
|
6
|
-
|
7
|
-
else
|
8
|
-
|
9
|
-
end
|
10
|
-
d.proxy.ListNames[0].each{ |n| puts "\t#{n}" }
|
11
|
-
|
6
|
+
DBus::SystemBus.instance
|
7
|
+
else
|
8
|
+
DBus::SessionBus.instance
|
9
|
+
end
|
10
|
+
d.proxy.ListNames[0].each { |n| puts "\t#{n}" }
|
data/examples/utils/notify.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
3
|
+
require "dbus"
|
4
4
|
|
5
5
|
if ARGV.size < 2
|
6
6
|
puts "Usage:"
|
@@ -9,11 +9,9 @@ if ARGV.size < 2
|
|
9
9
|
end
|
10
10
|
|
11
11
|
d = DBus::SessionBus.instance
|
12
|
-
o = d
|
13
|
-
o.introspect
|
12
|
+
o = d["org.freedesktop.Notifications"]["/org/freedesktop/Notifications"]
|
14
13
|
|
15
14
|
i = o["org.freedesktop.Notifications"]
|
16
15
|
|
17
|
-
i.Notify(
|
16
|
+
i.Notify("notify.rb", 0, "info", ARGV[0], ARGV[1], [], {}, 2000) do |ret, param|
|
18
17
|
end
|
19
|
-
|
data/lib/dbus.rb
CHANGED
@@ -34,26 +34,22 @@ require "thread"
|
|
34
34
|
# Module containing all the D-Bus modules and classes.
|
35
35
|
module DBus
|
36
36
|
# Default socket name for the system bus.
|
37
|
-
SystemSocketName = "unix:path=/var/run/dbus/system_bus_socket"
|
37
|
+
SystemSocketName = "unix:path=/var/run/dbus/system_bus_socket".freeze
|
38
38
|
|
39
39
|
# Byte signifying big endianness.
|
40
|
-
BIG_END =
|
40
|
+
BIG_END = "B".freeze
|
41
41
|
# Byte signifying little endianness.
|
42
|
-
LIL_END =
|
42
|
+
LIL_END = "l".freeze
|
43
43
|
|
44
44
|
# Byte signifying the host's endianness.
|
45
45
|
HOST_END = if [0x01020304].pack("L").unpack("V")[0] == 0x01020304
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
46
|
+
LIL_END
|
47
|
+
else
|
48
|
+
BIG_END
|
49
|
+
end
|
50
50
|
|
51
51
|
# General exceptions.
|
52
52
|
|
53
|
-
# Exception raised when an invalid packet is encountered.
|
54
|
-
class InvalidPacketException < Exception
|
55
|
-
end
|
56
|
-
|
57
53
|
# Exception raised when there is a problem with a type (may be unknown or
|
58
54
|
# mismatch).
|
59
55
|
class TypeException < Exception
|
@@ -64,16 +60,8 @@ module DBus
|
|
64
60
|
class IncompleteBufferException < Exception
|
65
61
|
end
|
66
62
|
|
67
|
-
# Exception raised when a method has not been implemented (yet).
|
68
|
-
class MethodNotImplemented < Exception
|
69
|
-
end
|
70
|
-
|
71
|
-
# Exception raised when a method is invoked with invalid
|
72
|
-
# parameters (wrong number or type).
|
73
|
-
class InvalidParameters < Exception
|
74
|
-
end
|
75
|
-
|
76
63
|
# Exception raised when an invalid method name is used.
|
64
|
+
# FIXME: use NameError
|
77
65
|
class InvalidMethodName < Exception
|
78
66
|
end
|
79
67
|
|