1
static DBusHandlerResult
2
my_com_netsplit_Nih_Test_Poke_method (NihDBusObject * object,
3
NihDBusMessage *message)
9
const char * value_dbus;
11
nih_assert (object != NULL);
12
nih_assert (message != NULL);
14
/* Iterate the arguments to the message and demarshal into arguments
15
* for our own function call.
17
dbus_message_iter_init (message->message, &iter);
19
/* Demarshal a uint32_t from the message */
20
if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_UINT32) {
21
reply = dbus_message_new_error (message->message, DBUS_ERROR_INVALID_ARGS,
22
"Invalid arguments to Poke method");
24
return DBUS_HANDLER_RESULT_NEED_MEMORY;
26
if (! dbus_connection_send (message->connection, reply, NULL)) {
27
dbus_message_unref (reply);
28
return DBUS_HANDLER_RESULT_NEED_MEMORY;
31
dbus_message_unref (reply);
32
return DBUS_HANDLER_RESULT_HANDLED;
35
dbus_message_iter_get_basic (&iter, &address);
37
dbus_message_iter_next (&iter);
39
/* Demarshal a char * from the message */
40
if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_STRING) {
41
reply = dbus_message_new_error (message->message, DBUS_ERROR_INVALID_ARGS,
42
"Invalid arguments to Poke method");
44
return DBUS_HANDLER_RESULT_NEED_MEMORY;
46
if (! dbus_connection_send (message->connection, reply, NULL)) {
47
dbus_message_unref (reply);
48
return DBUS_HANDLER_RESULT_NEED_MEMORY;
51
dbus_message_unref (reply);
52
return DBUS_HANDLER_RESULT_HANDLED;
55
dbus_message_iter_get_basic (&iter, &value_dbus);
57
value = nih_strdup (message, value_dbus);
59
return DBUS_HANDLER_RESULT_NEED_MEMORY;
62
dbus_message_iter_next (&iter);
64
if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_INVALID) {
65
reply = dbus_message_new_error (message->message, DBUS_ERROR_INVALID_ARGS,
66
"Invalid arguments to Poke method");
68
return DBUS_HANDLER_RESULT_NEED_MEMORY;
70
if (! dbus_connection_send (message->connection, reply, NULL)) {
71
dbus_message_unref (reply);
72
return DBUS_HANDLER_RESULT_NEED_MEMORY;
75
dbus_message_unref (reply);
76
return DBUS_HANDLER_RESULT_HANDLED;
79
/* Call the handler function */
80
nih_error_push_context ();
81
if (my_test_poke (object->data, message, address, value) < 0) {
84
err = nih_error_get ();
85
if (err->number == ENOMEM) {
87
nih_error_pop_context ();
89
return DBUS_HANDLER_RESULT_NEED_MEMORY;
90
} else if (err->number == NIH_DBUS_ERROR) {
91
NihDBusError *dbus_err = (NihDBusError *)err;
93
reply = NIH_MUST (dbus_message_new_error (message->message, dbus_err->name, err->message));
95
nih_error_pop_context ();
97
NIH_MUST (dbus_connection_send (message->connection, reply, NULL));
99
dbus_message_unref (reply);
100
return DBUS_HANDLER_RESULT_HANDLED;
102
reply = NIH_MUST (dbus_message_new_error (message->message, DBUS_ERROR_FAILED, err->message));
104
nih_error_pop_context ();
106
NIH_MUST (dbus_connection_send (message->connection, reply, NULL));
108
dbus_message_unref (reply);
109
return DBUS_HANDLER_RESULT_HANDLED;
112
nih_error_pop_context ();
114
/* If the sender doesn't care about a reply, don't bother wasting
115
* effort constructing and sending one.
117
if (dbus_message_get_no_reply (message->message))
118
return DBUS_HANDLER_RESULT_HANDLED;
123
/* Construct the reply message. */
124
reply = dbus_message_new_method_return (message->message);
128
dbus_message_iter_init_append (reply, &iter);
129
enomem: __attribute__ ((unused));
132
/* Send the reply, appending it to the outgoing queue. */
133
NIH_MUST (dbus_connection_send (message->connection, reply, NULL));
135
dbus_message_unref (reply);
137
return DBUS_HANDLER_RESULT_HANDLED;
141
static DBusHandlerResult
142
my_com_netsplit_Nih_Test_Peek_method (NihDBusObject * object,
143
NihDBusMessage *message)
145
DBusMessageIter iter;
149
nih_assert (object != NULL);
150
nih_assert (message != NULL);
152
/* Iterate the arguments to the message and demarshal into arguments
153
* for our own function call.
155
dbus_message_iter_init (message->message, &iter);
157
/* Demarshal a uint32_t from the message */
158
if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_UINT32) {
159
reply = dbus_message_new_error (message->message, DBUS_ERROR_INVALID_ARGS,
160
"Invalid arguments to Peek method");
162
return DBUS_HANDLER_RESULT_NEED_MEMORY;
164
if (! dbus_connection_send (message->connection, reply, NULL)) {
165
dbus_message_unref (reply);
166
return DBUS_HANDLER_RESULT_NEED_MEMORY;
169
dbus_message_unref (reply);
170
return DBUS_HANDLER_RESULT_HANDLED;
173
dbus_message_iter_get_basic (&iter, &address);
175
dbus_message_iter_next (&iter);
177
if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_INVALID) {
178
reply = dbus_message_new_error (message->message, DBUS_ERROR_INVALID_ARGS,
179
"Invalid arguments to Peek method");
181
return DBUS_HANDLER_RESULT_NEED_MEMORY;
183
if (! dbus_connection_send (message->connection, reply, NULL)) {
184
dbus_message_unref (reply);
185
return DBUS_HANDLER_RESULT_NEED_MEMORY;
188
dbus_message_unref (reply);
189
return DBUS_HANDLER_RESULT_HANDLED;
192
/* Call the handler function */
193
nih_error_push_context ();
194
if (my_test_peek (object->data, message, address) < 0) {
197
err = nih_error_get ();
198
if (err->number == ENOMEM) {
200
nih_error_pop_context ();
202
return DBUS_HANDLER_RESULT_NEED_MEMORY;
203
} else if (err->number == NIH_DBUS_ERROR) {
204
NihDBusError *dbus_err = (NihDBusError *)err;
206
reply = NIH_MUST (dbus_message_new_error (message->message, dbus_err->name, err->message));
208
nih_error_pop_context ();
210
NIH_MUST (dbus_connection_send (message->connection, reply, NULL));
212
dbus_message_unref (reply);
213
return DBUS_HANDLER_RESULT_HANDLED;
215
reply = NIH_MUST (dbus_message_new_error (message->message, DBUS_ERROR_FAILED, err->message));
217
nih_error_pop_context ();
219
NIH_MUST (dbus_connection_send (message->connection, reply, NULL));
221
dbus_message_unref (reply);
222
return DBUS_HANDLER_RESULT_HANDLED;
225
nih_error_pop_context ();
227
return DBUS_HANDLER_RESULT_HANDLED;
231
my_test_peek_reply (NihDBusMessage *message,
235
DBusMessageIter iter;
237
nih_assert (message != NULL);
238
nih_assert (value != NULL);
240
/* If the sender doesn't care about a reply, don't bother wasting
241
* effort constructing and sending one.
243
if (dbus_message_get_no_reply (message->message))
246
/* Construct the reply message. */
247
reply = dbus_message_new_method_return (message->message);
251
dbus_message_iter_init_append (reply, &iter);
253
/* Marshal a char * onto the message */
254
if (! dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &value)) {
255
dbus_message_unref (reply);
259
/* Send the reply, appending it to the outgoing queue. */
260
if (! dbus_connection_send (message->connection, reply, NULL)) {
261
dbus_message_unref (reply);
265
dbus_message_unref (reply);
271
static DBusHandlerResult
272
my_com_netsplit_Nih_Test_IsValidAddress_method (NihDBusObject * object,
273
NihDBusMessage *message)
275
DBusMessageIter iter;
280
nih_assert (object != NULL);
281
nih_assert (message != NULL);
283
/* Iterate the arguments to the message and demarshal into arguments
284
* for our own function call.
286
dbus_message_iter_init (message->message, &iter);
288
/* Demarshal a uint32_t from the message */
289
if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_UINT32) {
290
reply = dbus_message_new_error (message->message, DBUS_ERROR_INVALID_ARGS,
291
"Invalid arguments to IsValidAddress method");
293
return DBUS_HANDLER_RESULT_NEED_MEMORY;
295
if (! dbus_connection_send (message->connection, reply, NULL)) {
296
dbus_message_unref (reply);
297
return DBUS_HANDLER_RESULT_NEED_MEMORY;
300
dbus_message_unref (reply);
301
return DBUS_HANDLER_RESULT_HANDLED;
304
dbus_message_iter_get_basic (&iter, &address);
306
dbus_message_iter_next (&iter);
308
if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_INVALID) {
309
reply = dbus_message_new_error (message->message, DBUS_ERROR_INVALID_ARGS,
310
"Invalid arguments to IsValidAddress method");
312
return DBUS_HANDLER_RESULT_NEED_MEMORY;
314
if (! dbus_connection_send (message->connection, reply, NULL)) {
315
dbus_message_unref (reply);
316
return DBUS_HANDLER_RESULT_NEED_MEMORY;
319
dbus_message_unref (reply);
320
return DBUS_HANDLER_RESULT_HANDLED;
323
/* Call the handler function */
324
nih_error_push_context ();
325
if (my_test_is_valid_address (object->data, message, address, &is_valid) < 0) {
328
err = nih_error_get ();
329
if (err->number == ENOMEM) {
331
nih_error_pop_context ();
333
return DBUS_HANDLER_RESULT_NEED_MEMORY;
334
} else if (err->number == NIH_DBUS_ERROR) {
335
NihDBusError *dbus_err = (NihDBusError *)err;
337
reply = NIH_MUST (dbus_message_new_error (message->message, dbus_err->name, err->message));
339
nih_error_pop_context ();
341
NIH_MUST (dbus_connection_send (message->connection, reply, NULL));
343
dbus_message_unref (reply);
344
return DBUS_HANDLER_RESULT_HANDLED;
346
reply = NIH_MUST (dbus_message_new_error (message->message, DBUS_ERROR_FAILED, err->message));
348
nih_error_pop_context ();
350
NIH_MUST (dbus_connection_send (message->connection, reply, NULL));
352
dbus_message_unref (reply);
353
return DBUS_HANDLER_RESULT_HANDLED;
356
nih_error_pop_context ();
358
/* If the sender doesn't care about a reply, don't bother wasting
359
* effort constructing and sending one.
361
if (dbus_message_get_no_reply (message->message))
362
return DBUS_HANDLER_RESULT_HANDLED;
367
/* Construct the reply message. */
368
reply = dbus_message_new_method_return (message->message);
372
dbus_message_iter_init_append (reply, &iter);
374
/* Marshal a int onto the message */
375
if (! dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &is_valid)) {
376
dbus_message_unref (reply);
380
enomem: __attribute__ ((unused));
383
/* Send the reply, appending it to the outgoing queue. */
384
NIH_MUST (dbus_connection_send (message->connection, reply, NULL));
386
dbus_message_unref (reply);
388
return DBUS_HANDLER_RESULT_HANDLED;
393
my_com_netsplit_Nih_Test_colour_get (NihDBusObject * object,
394
NihDBusMessage * message,
395
DBusMessageIter *iter)
397
DBusMessageIter variter;
400
nih_assert (object != NULL);
401
nih_assert (message != NULL);
402
nih_assert (iter != NULL);
404
/* Call the handler function */
405
if (my_test_get_colour (object->data, message, &value) < 0)
408
/* Append a variant onto the message to contain the property value. */
409
if (! dbus_message_iter_open_container (iter, DBUS_TYPE_VARIANT, "s", &variter)) {
410
nih_error_raise_no_memory ();
414
/* Marshal a char * onto the message */
415
if (! dbus_message_iter_append_basic (&variter, DBUS_TYPE_STRING, &value)) {
416
dbus_message_iter_abandon_container (iter, &variter);
417
nih_error_raise_no_memory ();
421
/* Finish the variant */
422
if (! dbus_message_iter_close_container (iter, &variter)) {
423
nih_error_raise_no_memory ();
431
my_com_netsplit_Nih_Test_colour_set (NihDBusObject * object,
432
NihDBusMessage * message,
433
DBusMessageIter *iter)
435
DBusMessageIter variter;
436
const char * value_dbus;
439
nih_assert (object != NULL);
440
nih_assert (message != NULL);
441
nih_assert (iter != NULL);
443
/* Recurse into the variant */
444
if (dbus_message_iter_get_arg_type (iter) != DBUS_TYPE_VARIANT) {
445
nih_dbus_error_raise_printf (DBUS_ERROR_INVALID_ARGS,
446
"Invalid arguments to colour property");
450
dbus_message_iter_recurse (iter, &variter);
452
/* Demarshal a char * from the message */
453
if (dbus_message_iter_get_arg_type (&variter) != DBUS_TYPE_STRING) {
454
nih_dbus_error_raise_printf (DBUS_ERROR_INVALID_ARGS,
455
"Invalid arguments to colour property");
459
dbus_message_iter_get_basic (&variter, &value_dbus);
461
value = nih_strdup (message, value_dbus);
463
nih_error_raise_no_memory ();
467
dbus_message_iter_next (&variter);
469
dbus_message_iter_next (iter);
471
if (dbus_message_iter_get_arg_type (iter) != DBUS_TYPE_INVALID) {
472
nih_dbus_error_raise_printf (DBUS_ERROR_INVALID_ARGS,
473
"Invalid arguments to colour property");
477
/* Call the handler function */
478
if (my_test_set_colour (object->data, message, value) < 0)
486
my_com_netsplit_Nih_Test_size_get (NihDBusObject * object,
487
NihDBusMessage * message,
488
DBusMessageIter *iter)
490
DBusMessageIter variter;
493
nih_assert (object != NULL);
494
nih_assert (message != NULL);
495
nih_assert (iter != NULL);
497
/* Call the handler function */
498
if (my_test_get_size (object->data, message, &value) < 0)
501
/* Append a variant onto the message to contain the property value. */
502
if (! dbus_message_iter_open_container (iter, DBUS_TYPE_VARIANT, "u", &variter)) {
503
nih_error_raise_no_memory ();
507
/* Marshal a uint32_t onto the message */
508
if (! dbus_message_iter_append_basic (&variter, DBUS_TYPE_UINT32, &value)) {
509
dbus_message_iter_abandon_container (iter, &variter);
510
nih_error_raise_no_memory ();
514
/* Finish the variant */
515
if (! dbus_message_iter_close_container (iter, &variter)) {
516
nih_error_raise_no_memory ();
525
my_com_netsplit_Nih_Test_touch_set (NihDBusObject * object,
526
NihDBusMessage * message,
527
DBusMessageIter *iter)
529
DBusMessageIter variter;
532
nih_assert (object != NULL);
533
nih_assert (message != NULL);
534
nih_assert (iter != NULL);
536
/* Recurse into the variant */
537
if (dbus_message_iter_get_arg_type (iter) != DBUS_TYPE_VARIANT) {
538
nih_dbus_error_raise_printf (DBUS_ERROR_INVALID_ARGS,
539
"Invalid arguments to touch property");
543
dbus_message_iter_recurse (iter, &variter);
545
/* Demarshal a int from the message */
546
if (dbus_message_iter_get_arg_type (&variter) != DBUS_TYPE_BOOLEAN) {
547
nih_dbus_error_raise_printf (DBUS_ERROR_INVALID_ARGS,
548
"Invalid arguments to touch property");
552
dbus_message_iter_get_basic (&variter, &value);
554
dbus_message_iter_next (&variter);
556
dbus_message_iter_next (iter);
558
if (dbus_message_iter_get_arg_type (iter) != DBUS_TYPE_INVALID) {
559
nih_dbus_error_raise_printf (DBUS_ERROR_INVALID_ARGS,
560
"Invalid arguments to touch property");
564
/* Call the handler function */
565
if (my_test_set_touch (object->data, message, value) < 0)
572
static DBusHandlerResult
573
my_com_netsplit_Nih_Foo_Bing_method (NihDBusObject * object,
574
NihDBusMessage *message)
576
DBusMessageIter iter;
579
nih_assert (object != NULL);
580
nih_assert (message != NULL);
582
/* Iterate the arguments to the message and demarshal into arguments
583
* for our own function call.
585
dbus_message_iter_init (message->message, &iter);
587
if (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_INVALID) {
588
reply = dbus_message_new_error (message->message, DBUS_ERROR_INVALID_ARGS,
589
"Invalid arguments to Bing method");
591
return DBUS_HANDLER_RESULT_NEED_MEMORY;
593
if (! dbus_connection_send (message->connection, reply, NULL)) {
594
dbus_message_unref (reply);
595
return DBUS_HANDLER_RESULT_NEED_MEMORY;
598
dbus_message_unref (reply);
599
return DBUS_HANDLER_RESULT_HANDLED;
602
/* Call the handler function */
603
nih_error_push_context ();
604
if (my_foo_bing (object->data, message) < 0) {
607
err = nih_error_get ();
608
if (err->number == ENOMEM) {
610
nih_error_pop_context ();
612
return DBUS_HANDLER_RESULT_NEED_MEMORY;
613
} else if (err->number == NIH_DBUS_ERROR) {
614
NihDBusError *dbus_err = (NihDBusError *)err;
616
reply = NIH_MUST (dbus_message_new_error (message->message, dbus_err->name, err->message));
618
nih_error_pop_context ();
620
NIH_MUST (dbus_connection_send (message->connection, reply, NULL));
622
dbus_message_unref (reply);
623
return DBUS_HANDLER_RESULT_HANDLED;
625
reply = NIH_MUST (dbus_message_new_error (message->message, DBUS_ERROR_FAILED, err->message));
627
nih_error_pop_context ();
629
NIH_MUST (dbus_connection_send (message->connection, reply, NULL));
631
dbus_message_unref (reply);
632
return DBUS_HANDLER_RESULT_HANDLED;
635
nih_error_pop_context ();
637
/* If the sender doesn't care about a reply, don't bother wasting
638
* effort constructing and sending one.
640
if (dbus_message_get_no_reply (message->message))
641
return DBUS_HANDLER_RESULT_HANDLED;
646
/* Construct the reply message. */
647
reply = dbus_message_new_method_return (message->message);
651
dbus_message_iter_init_append (reply, &iter);
652
enomem: __attribute__ ((unused));
655
/* Send the reply, appending it to the outgoing queue. */
656
NIH_MUST (dbus_connection_send (message->connection, reply, NULL));
658
dbus_message_unref (reply);
660
return DBUS_HANDLER_RESULT_HANDLED;