dbus 0.1.8 → 0.1.9

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/ext/ruby-dbus-bus.c CHANGED
@@ -43,6 +43,74 @@ mDBusBinding_bus_get(int argc, VALUE *argv)
43
43
  return CONN_NEW(conn);
44
44
  }
45
45
 
46
+ /*
47
+ * call-seq:
48
+ * bus_register(connection) => true|false
49
+ *
50
+ * Registers a connection with the bus
51
+ */
52
+ static VALUE
53
+ mDBusBinding_bus_register(VALUE klass, VALUE conn)
54
+ {
55
+ dbus_bool_t ret;
56
+
57
+ ret = FALSE;
58
+ RDBUS_TRY(
59
+ ret = dbus_bus_register(CONN_GET(conn), &error)
60
+ );
61
+
62
+ if (ret)
63
+ return Qtrue;
64
+ return Qfalse;
65
+ }
66
+
67
+ /*
68
+ * call-seq:
69
+ * bus_set_base_service(connection, base_service) => true|false
70
+ *
71
+ * Sets the base service name of the given connection.
72
+ *
73
+ */
74
+ static VALUE
75
+ mDBusBinding_bus_set_base_service(VALUE klass, VALUE conn, VALUE name)
76
+ {
77
+ if (!dbus_bus_set_base_service(CONN_GET(conn), StringValuePtr(name)))
78
+ return Qfalse;
79
+ return Qtrue;
80
+ }
81
+
82
+ /*
83
+ * call-seq:
84
+ * bus_get_base_service(connection) => name
85
+ *
86
+ * Gets the base service name of the given connection. This value can be used
87
+ * for the +destination+ field of a DBusMessage.
88
+ */
89
+ static VALUE
90
+ mDBusBinding_bus_get_base_service(VALUE klass, VALUE conn)
91
+ {
92
+ return rb_str_new2(dbus_bus_get_base_service(CONN_GET(conn)));
93
+ }
94
+
95
+ /*
96
+ * call-seq:
97
+ * bus_get_unix_user(connection, service_name) => uid
98
+ *
99
+ * Gets the UNIX user ID for for the given service on this bus.
100
+ */
101
+ static VALUE
102
+ mDBusBinding_bus_get_unix_user(VALUE klass, VALUE conn, VALUE name)
103
+ {
104
+ VALUE uid;
105
+
106
+ uid = -1;
107
+ RDBUS_TRY(
108
+ uid = LONG2NUM(dbus_bus_get_unix_user(CONN_GET(conn),
109
+ StringValuePtr(name), &error))
110
+ );
111
+ return uid;
112
+ }
113
+
46
114
  /*
47
115
  * call-seq:
48
116
  * bus_acquire_service(connection, service_name, [flags=0]) => retcode
@@ -135,11 +203,53 @@ mDBusBinding_bus_remove_match(VALUE klass, VALUE conn, VALUE rule)
135
203
  return Qnil;
136
204
  }
137
205
 
206
+ /*
207
+ * call-seq:
208
+ * bus_activate_service(connection, service_name, [flags=0]) => [true|false, result]
209
+ *
210
+ * Activates the given service. The flags parameter currently (D-BUS 0.22) does
211
+ * nothing.
212
+ */
213
+ static VALUE
214
+ mDBusBinding_bus_activate_service(int argc, VALUE *argv)
215
+ {
216
+ VALUE conn;
217
+ VALUE name;
218
+ VALUE flags;
219
+ dbus_uint32_t service_flags;
220
+ dbus_uint32_t result;
221
+ VALUE ret;
222
+ dbus_bool_t dbus_ret;
223
+
224
+ conn = name = flags = Qnil;
225
+ service_flags = 0;
226
+ rb_scan_args(argc, argv, "21", &conn, &name, &flags);
227
+ if (flags != Qnil)
228
+ service_flags = NUM2INT(flags);
229
+
230
+ result = 0;
231
+ dbus_ret = FALSE;
232
+ RDBUS_TRY(
233
+ dbus_ret = dbus_bus_activate_service(CONN_GET(conn), StringValuePtr(name),
234
+ service_flags, &result, &error)
235
+ );
236
+
237
+ ret = rb_ary_new();
238
+ rb_ary_push(ret, dbus_ret ? Qtrue : Qfalse);
239
+ rb_ary_push(ret, INT2NUM(result));
240
+ return ret;
241
+ }
242
+
138
243
  void Init_dbus_bus()
139
244
  {
140
245
  rb_define_module_function(mDBusBinding, "bus_get", mDBusBinding_bus_get, -1);
246
+ rb_define_module_function(mDBusBinding, "bus_register", mDBusBinding_bus_register, 1);
247
+ rb_define_module_function(mDBusBinding, "bus_set_base_service", mDBusBinding_bus_set_base_service, 2);
248
+ rb_define_module_function(mDBusBinding, "bus_get_base_service", mDBusBinding_bus_get_base_service, 1);
249
+ rb_define_module_function(mDBusBinding, "bus_get_unix_user", mDBusBinding_bus_get_unix_user, 2);
141
250
  rb_define_module_function(mDBusBinding, "bus_acquire_service", mDBusBinding_bus_acquire_service, -1);
142
251
  rb_define_module_function(mDBusBinding, "bus_service_exists", mDBusBinding_bus_service_exists, 2);
252
+ rb_define_module_function(mDBusBinding, "bus_activate_service", mDBusBinding_bus_activate_service, -1);
143
253
  rb_define_module_function(mDBusBinding, "bus_add_match", mDBusBinding_bus_add_match, 2);
144
254
  rb_define_module_function(mDBusBinding, "bus_remove_match", mDBusBinding_bus_remove_match, 2);
145
255
  }
@@ -99,19 +99,6 @@ cDBusConnection_open(VALUE klass, VALUE address)
99
99
  return CONN_NEW_TAKE_OWNERSHIP(conn);
100
100
  }
101
101
 
102
- /*
103
- * call-seq:
104
- * get_base_service => name
105
- *
106
- * Gets the base service name of the connection. This value can be used
107
- * for the +destination+ field of a DBusMessage.
108
- */
109
- static VALUE
110
- cDBusConnection_get_base_service(VALUE self)
111
- {
112
- return rb_str_new2(dbus_bus_get_base_service(CONN_GET(self)));
113
- }
114
-
115
102
  /*
116
103
  * call-seq:
117
104
  * setup_with_g_main => nil
@@ -472,8 +459,10 @@ _on_object_path_unregister(DBusConnection *conn, void *user_data)
472
459
  exc = 0;
473
460
  rb_protect(_real_call_unregister_cb, (VALUE)args, &exc);
474
461
 
475
- if (exc)
476
- rb_warn("Unregister callback raised exception (ignored)");
462
+ if (exc) {
463
+ rb_warn("Unregister callback raised exception (ignored), backtrace:");
464
+ rb_backtrace();
465
+ }
477
466
 
478
467
  ruby_xfree(data);
479
468
  }
@@ -505,10 +494,12 @@ _on_object_path_message(DBusConnection *conn, DBusMessage *msg, void *user_data)
505
494
  exc = 0;
506
495
  ret = rb_protect(_real_call_message_cb, (VALUE)args, &exc);
507
496
 
508
- if (exc)
509
- rb_warn("Message callback raised exception (ignored)");
497
+ if (exc) {
498
+ rb_warn("Message callback raised exception (ignored), backtrace:");
499
+ rb_backtrace();
500
+ }
510
501
 
511
- if (ret == Qnil)
502
+ if (NIL_P(ret))
512
503
  result = DBUS_HANDLER_RESULT_HANDLED;
513
504
  result = NUM2INT(ret);
514
505
  return result;
@@ -635,10 +626,12 @@ _on_filter_message(DBusConnection *conn, DBusMessage *msg, void *user_data)
635
626
  exc = 0;
636
627
  ret = rb_protect(_real_call_filter_cb, (VALUE)args, &exc);
637
628
 
638
- if (exc)
639
- rb_warn("Filter callback raised exception (ignored)");
629
+ if (exc) {
630
+ rb_warn("Filter callback raised exception (ignored), backtrace:");
631
+ rb_backtrace();
632
+ }
640
633
 
641
- if (ret == Qnil)
634
+ if (NIL_P(ret))
642
635
  result = DBUS_HANDLER_RESULT_HANDLED;
643
636
  result = NUM2INT(ret);
644
637
  return result;
@@ -739,7 +732,6 @@ Init_dbus_connection()
739
732
  rb_define_singleton_method(cDBusConnection, "open", cDBusConnection_open, 1);
740
733
  rb_define_singleton_method(cDBusConnection, "new", cDBusConnection_open, 1);
741
734
 
742
- rb_define_method(cDBusConnection, "get_base_service", cDBusConnection_get_base_service, 0);
743
735
  rb_define_method(cDBusConnection, "setup_with_g_main", cDBusConnection_setup_with_g_main, 0);
744
736
  rb_define_method(cDBusConnection, "disconnect", cDBusConnection_disconnect, 0);
745
737
  rb_define_method(cDBusConnection, "get_is_connected", cDBusConnection_get_is_connected, 0);
data/lib/dbus.rb CHANGED
@@ -87,6 +87,26 @@ module DBus
87
87
  rule
88
88
  end
89
89
 
90
+ # Activates the given service on this bus
91
+ def activate_service(service_name, flags=0)
92
+ DBus::Binding::bus_activate_service(@connection, service_name, flags)
93
+ end
94
+
95
+ # Returns the UNIX user ID for the given service
96
+ def get_unix_user(service_name)
97
+ DBus::Binding::bus_get_unix_user(@connection, service_name)
98
+ end
99
+
100
+ # Returns the base service name of this bus
101
+ def get_base_service
102
+ DBus::Binding::bus_get_base_service(@connection)
103
+ end
104
+
105
+ # Sets the base service name of this bus
106
+ def set_base_service(service_name)
107
+ DBus::Binding::bus_set_base_service(@connection, service_name)
108
+ end
109
+
90
110
  protected
91
111
  def signal_dispatcher(connection, message)
92
112
  return HANDLER_RESULT_NOT_YET_HANDLED unless message.get_type == MESSAGE_TYPE_SIGNAL
data/lib/dbus/version.rb CHANGED
@@ -13,7 +13,7 @@ module DBus
13
13
  module BindingVersion
14
14
  VERSION_MAJOR = 0
15
15
  VERSION_MINOR = 1
16
- VERSION_PATCH = 8
16
+ VERSION_PATCH = 9
17
17
  end
18
18
 
19
19
  # Contains the string version of the D-BUS bindings
@@ -19,6 +19,14 @@ class TC_DBusConnection < Test::Unit::TestCase
19
19
  conn = DBus::Binding::bus_get(DBus::BUS_SYSTEM)
20
20
  assert(!conn.nil?)
21
21
  assert(conn.is_a?(DBus::Binding::DBusConnection))
22
+ service_name = DBus::Binding::bus_get_base_service(conn)
23
+ assert(!service_name.nil?)
24
+ # uid = DBus::Binding::bus_get_unix_user(conn, nil)
25
+ # p uid
26
+ # assert(uid)
27
+ DBus::Binding::bus_set_base_service(conn, "test.service.Name")
28
+ assert(DBus::Binding::bus_get_base_service(conn) == "test.service.Name")
29
+ #DBus::Binding::bus_activate_service(conn, "org.gnomemeeting.instance")
22
30
  end
23
31
 
24
32
  def test_conn_open_new
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.1
2
+ rubygems_version: 0.8.3
3
3
  specification_version: 1
4
4
  name: dbus
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.8
7
- date: 2004-12-12
6
+ version: 0.1.9
7
+ date: 2004-12-28
8
8
  summary: Ruby bindings for D-BUS.
9
9
  require_paths:
10
10
  - lib
11
- author: Leon Breedt
12
11
  email: bitserf@gmail.com
13
12
  homepage: http://rubyforge.org/projects/dbus-ruby
14
13
  rubyforge_project: dbus-ruby
@@ -25,6 +24,8 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
25
24
  version: 0.0.0
26
25
  version:
27
26
  platform: ruby
27
+ authors:
28
+ - Leon Breedt
28
29
  files:
29
30
  - examples/example-signal-emitter.rb
30
31
  - examples/list-session-services.rb