Imported Upstream version 1.0.0
[platform/upstream/perl-Net-DBus.git] / examples / example-signal-receiver.pl
1 #!/usr/bin/perl -w
2
3 use warnings;
4 use strict;
5
6 use Net::DBus;
7 use Net::DBus::Reactor;
8
9 use Carp qw(confess cluck);
10
11 #$SIG{__WARN__} = sub { cluck $_[0] };
12 #$SIG{__DIE__} = sub { confess $_[0] };
13
14 my $bus = Net::DBus->session();
15
16 my $service = $bus->get_service("org.designfu.TestService");
17 my $object  = $service->get_object("/org/designfu/TestService/object",
18                                    "org.designfu.TestService");
19
20 my $sig1;
21 my $sig2;
22
23 my $sig1ref = \$sig1;
24 my $sig2ref = \$sig2;
25
26 sub hello_signal_handler1 {
27     my $greeting = shift;
28     print ${$sig1ref} . " Received hello signal with greeting '$greeting'\n";
29
30 }
31 sub hello_signal_handler2 {
32     my $greeting = shift;
33     print ${$sig2ref} . " Received hello signal with greeting '$greeting'\n";
34
35     $object->disconnect_from_signal("HelloSignal", ${$sig2ref});
36     ${$sig2ref} = undef;
37 }
38
39 $sig1 = $object->connect_to_signal("HelloSignal", \&hello_signal_handler1);
40 $sig2 = $object->connect_to_signal("HelloSignal", \&hello_signal_handler2);
41
42 my $reactor = Net::DBus::Reactor->main();
43
44 my $ticks = 0;
45 $reactor->add_timeout(5000, sub {
46     $object->emitHelloSignal();
47     if ($ticks++ == 10) {
48       $reactor->shutdown();
49     }
50 });
51
52 $reactor->run();