ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/Strict.pm
(Generate patch)

Comparing AnyEvent/lib/AnyEvent/Strict.pm (file contents):
Revision 1.3 by root, Tue Jul 8 23:55:38 2008 UTC vs.
Revision 1.11 by root, Tue Apr 14 04:27:32 2009 UTC

1=head1 NAME
2
3AnyEvent::Strict - force strict mode on for the whole process
4
5=head1 SYNOPSIS
6
7 use AnyEvent::Strict;
8 # strict mode now switched on
9
10=head1 DESCRIPTION
11
12This module implements AnyEvent's strict mode.
13
14Loading it makes AnyEvent check all arguments to AnyEvent-methods, at the
15expense of being slower (often the argument checking takes longer than the
16actual function).
17
18Normally, you don't load this module yourself but instead use it
19indirectly via the C<PERL_ANYEVENT_STRICT> environment variable (see
20L<AnyEvent>). However, this module can be loaded at any time.
21
22=cut
23
1package AnyEvent::Strict; 24package AnyEvent::Strict;
2 25
3# supply checks for argument validity for many functions 26no warnings; # *sigh*
4# this is an internal module. although it could be loaded
5# at any time, this is not really documented.
6 27
7use Carp qw(croak); 28use Carp qw(croak);
29
8use AnyEvent (); 30use AnyEvent ();
9 31
10AnyEvent::post_detect { 32AnyEvent::post_detect {
11 # assume the first ISA member is the implementation 33 # assume the first ISA member is the implementation
12 # # and link us in before it in the chain. 34 # # and link us in before it in the chain.
21 43
22 ref $arg{cb} 44 ref $arg{cb}
23 or croak "AnyEvent->io called with illegal cb argument '$arg{cb}'"; 45 or croak "AnyEvent->io called with illegal cb argument '$arg{cb}'";
24 delete $arg{cb}; 46 delete $arg{cb};
25 47
26 fileno $arg{fh} 48 defined fileno $arg{fh}
27 or croak "AnyEvent->io called with illegal fh argument '$arg{fh}'"; 49 or croak "AnyEvent->io called with illegal fh argument '$arg{fh}'";
50 -f $arg{fh}
51 and croak "AnyEvent->io called with fh argument pointing to a file";
28 delete $arg{fh}; 52 delete $arg{fh};
29 53
30 $arg{poll} =~ /^[rw]$/ 54 $arg{poll} =~ /^[rw]$/
31 or croak "AnyEvent->io called with illegal poll argument '$arg{poll}'"; 55 or croak "AnyEvent->io called with illegal poll argument '$arg{poll}'";
32 delete $arg{poll}; 56 delete $arg{poll};
65 89
66 ref $arg{cb} 90 ref $arg{cb}
67 or croak "AnyEvent->signal called with illegal cb argument '$arg{cb}'"; 91 or croak "AnyEvent->signal called with illegal cb argument '$arg{cb}'";
68 delete $arg{cb}; 92 delete $arg{cb};
69 93
70 eval "require POSIX; defined &POSIX::SIG$arg{signal}" 94 eval "require POSIX; 0 < &POSIX::SIG$arg{signal}"
71 or croak "AnyEvent->signal called with illegal signal name '$arg{signal}'"; 95 or croak "AnyEvent->signal called with illegal signal name '$arg{signal}'";
72 delete $arg{signal}; 96 delete $arg{signal};
73 97
74 croak "AnyEvent->signal called with unsupported parameter(s) " . join ", ", keys %arg 98 croak "AnyEvent->signal called with unsupported parameter(s) " . join ", ", keys %arg
75 if keys %arg; 99 if keys %arg;
80sub child { 104sub child {
81 my $class = shift; 105 my $class = shift;
82 my %arg = @_; 106 my %arg = @_;
83 107
84 ref $arg{cb} 108 ref $arg{cb}
85 or croak "AnyEvent->signal called with illegal cb argument '$arg{cb}'"; 109 or croak "AnyEvent->child called with illegal cb argument '$arg{cb}'";
86 delete $arg{cb}; 110 delete $arg{cb};
87 111
88 $arg{pid} =~ /^-?\d+$/ 112 $arg{pid} =~ /^-?\d+$/
89 or croak "AnyEvent->signal called with illegal pid value '$arg{pid}'"; 113 or croak "AnyEvent->child called with malformed pid value '$arg{pid}'";
90 delete $arg{pid}; 114 delete $arg{pid};
91 115
92 croak "AnyEvent->signal called with unsupported parameter(s) " . join ", ", keys %arg 116 croak "AnyEvent->child called with unsupported parameter(s) " . join ", ", keys %arg
93 if keys %arg; 117 if keys %arg;
94 118
95 $class->SUPER::child (@_) 119 $class->SUPER::child (@_)
96} 120}
97 121
125 and croak "AnyEvent->now wrongly called with paramaters"; 149 and croak "AnyEvent->now wrongly called with paramaters";
126 150
127 $class->SUPER::now (@_) 151 $class->SUPER::now (@_)
128} 152}
129 153
1301 1541;
155
156=head1 AUTHOR
157
158 Marc Lehmann <schmorp@schmorp.de>
159 http://home.schmorp.de/
160
161=cut
162

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines