File Coverage

blib/lib/Event/RPC/Loop/AnyEvent.pm
Criterion Covered Total %
statement 32 42 76.1
branch n/a
condition n/a
subroutine 10 12 83.3
pod 6 8 75.0
total 48 62 77.4


line stmt bran cond sub pod time code
1             #-----------------------------------------------------------------------
2             # Copyright (C) 2002-2015 by Jörn Reder .
3             # All Rights Reserved. See file COPYRIGHT for details.
4             #
5             # This module is part of Event::RPC, which is free software; you can
6             # redistribute it and/or modify it under the same terms as Perl itself.
7             #-----------------------------------------------------------------------
8              
9             package Event::RPC::Loop::AnyEvent;
10              
11 17     17   122 use base qw( Event::RPC::Loop );
  17         57  
  17         12280  
12              
13 17     17   92 use strict;
  17         37  
  17         338  
14 17     17   113 use utf8;
  17         50  
  17         85  
15              
16 17     17   627 use AnyEvent;
  17         42  
  17         8925  
17              
18             my %watchers;
19              
20 17     17 0 396 sub get_loop_cv { shift->{loop_cv} }
21 17     17 0 72 sub set_loop_cv { shift->{loop_cv} = $_[1] }
22              
23             sub add_io_watcher {
24 193     193 1 391 my $self = shift;
25 193         935 my %par = @_;
26 193         631 my ($fh, $cb, $desc, $poll) = @par{'fh','cb','desc','poll'};
27              
28 193         1626 my $watcher = AnyEvent->io (
29             fh => $fh,
30             poll => $poll,
31             cb => $cb,
32             );
33              
34 193         42108 $watchers{"$watcher"} = $watcher;
35            
36 193         1047 return $watcher;
37             }
38              
39             sub del_io_watcher {
40 159     159 1 320 my $self = shift;
41 159         314 my ($watcher) = @_;
42              
43 159         722 delete $watchers{"$watcher"};
44              
45 159         484 1;
46             }
47              
48             sub add_timer {
49 0     0 1 0 my $self = shift;
50 0         0 my %par = @_;
51             my ($interval, $after, $cb, $desc) =
52 0         0 @par{'interval','after','cb','desc'};
53              
54 0         0 my $timer = AnyEvent->timer (
55             after => $after,
56             interval => $interval,
57             cb => $cb,
58             );
59              
60 0         0 $watchers{"$timer"} = $timer;
61            
62 0         0 return $timer;
63             }
64              
65             sub del_timer {
66 0     0 1 0 my $self = shift;
67 0         0 my ($timer) = @_;
68              
69 0         0 delete $watchers{"$timer"};
70              
71 0         0 1;
72             }
73              
74             sub enter {
75 17     17 1 44 my $self = shift;
76              
77 17         241 my $loop_cv = AnyEvent->condvar;
78              
79 17         2900 $self->set_loop_cv($loop_cv);
80              
81 17         229 $loop_cv->wait;
82              
83 17         238 1;
84             }
85              
86             sub leave {
87 17     17 1 53 my $self = shift;
88              
89 17         106 $self->get_loop_cv->send;
90              
91 17         340 1;
92             }
93              
94             1;
95              
96             __END__