line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
# $Id: /mirror/perl/EV-Watcher-Bind/trunk/lib/EV/Watcher/Bind.pm 9173 2007-11-15T11:33:58.291707Z daisuke $ |
2
|
|
|
|
|
|
|
# |
3
|
|
|
|
|
|
|
# Copyright (c) 2007 Daisuke Maki |
4
|
|
|
|
|
|
|
# All rights reserved. |
5
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
package EV::Watcher::Bind; |
7
|
1
|
|
|
1
|
|
1291
|
use strict; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
44
|
|
8
|
1
|
|
|
1
|
|
6
|
use warnings; |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
38
|
|
9
|
1
|
|
|
1
|
|
3021
|
use EV; |
|
1
|
|
|
|
|
5720
|
|
|
1
|
|
|
|
|
223
|
|
10
|
|
|
|
|
|
|
our $VERSION = '0.00001'; |
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
BEGIN |
13
|
|
|
|
|
|
|
{ |
14
|
|
|
|
|
|
|
my $mk_wrapper = sub { |
15
|
16
|
|
|
|
|
19
|
my ($original) = @_; |
16
|
|
|
|
|
|
|
return sub { |
17
|
|
|
|
|
|
|
# the EV API always ends with a callback. pop that callback, and |
18
|
|
|
|
|
|
|
# take the rest of the arguments as the binding arguments |
19
|
0
|
|
|
0
|
|
0
|
my @binds; |
20
|
|
|
|
|
|
|
my $x; |
21
|
0
|
|
0
|
|
|
0
|
do { |
22
|
0
|
|
|
|
|
0
|
$x = pop @_; |
23
|
0
|
|
|
|
|
0
|
unshift @binds, $x; |
24
|
|
|
|
|
|
|
} while (@_ && ref $x ne 'CODE'); |
25
|
|
|
|
|
|
|
|
26
|
0
|
|
|
|
|
0
|
my $callback = shift @binds; |
27
|
0
|
|
|
|
|
0
|
my $w; |
28
|
0
|
|
|
0
|
|
0
|
$w = $original->(@_, sub { $callback->(@binds, $w) }); |
|
0
|
|
|
|
|
0
|
|
29
|
16
|
|
|
|
|
206
|
}; |
30
|
1
|
|
|
1
|
|
5
|
}; |
31
|
|
|
|
|
|
|
|
32
|
1
|
|
|
|
|
4
|
my @names = qw(io timer periodic signal child idle prepare check); |
33
|
1
|
|
|
|
|
2
|
my @suffix = ('', '_ns'); |
34
|
1
|
|
|
|
|
2
|
foreach my $name (@names) { |
35
|
8
|
|
|
|
|
9
|
foreach my $suffix (@suffix) { |
36
|
1
|
|
|
1
|
|
10
|
no strict 'refs'; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
134
|
|
37
|
16
|
|
|
|
|
28
|
my $fullname = "EV::${name}${suffix}"; |
38
|
16
|
|
|
|
|
17
|
my $bindname = "${fullname}_bind"; |
39
|
16
|
|
|
|
|
76
|
my $original = *{ $fullname }{CODE}; |
|
16
|
|
|
|
|
34
|
|
40
|
16
|
|
|
|
|
27
|
*{ $bindname } = $mk_wrapper->($original); |
|
16
|
|
|
|
|
129
|
|
41
|
|
|
|
|
|
|
} |
42
|
|
|
|
|
|
|
} |
43
|
|
|
|
|
|
|
} |
44
|
|
|
|
|
|
|
|
45
|
|
|
|
|
|
|
|
46
|
|
|
|
|
|
|
1; |
47
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
__END__ |