File Coverage

blib/lib/IO/Stream/const.pm
Criterion Covered Total %
statement 104 104 100.0
branch n/a
condition n/a
subroutine 34 34 100.0
pod n/a
total 138 138 100.0


line stmt bran cond sub pod time code
1             package IO::Stream::const;
2              
3 27     27   1789 use warnings;
  27         50  
  27         791  
4 27     27   131 use strict;
  27         47  
  27         547  
5              
6 27     27   2283 use version; our $VERSION = qv('1.0.10');
  27         6280  
  27         175  
7              
8             # update DEPENDENCIES in POD & Makefile.PL & README
9 27     27   2270 use Scalar::Util qw( dualvar );
  27         49  
  27         1769  
10 27     27   8242 use Errno qw( EAGAIN );
  27         13910  
  27         1812  
11 27     27   137 use Fcntl ();
  27         55  
  27         468  
12 27     27   9744 use Socket ();
  27         49415  
  27         730  
13              
14              
15 27     27   150 use constant WIN32 => 0;
  27         53  
  27         2114  
16 27     27   129 use constant BUFSIZE => 8192;
  27         58  
  27         1303  
17              
18             # Events:
19 27     27   155 use constant RESOLVED => 1<<0;
  27         52  
  27         1350  
20 27     27   128 use constant CONNECTED => 1<<1;
  27         52  
  27         1263  
21 27     27   135 use constant IN => 1<<2;
  27         45  
  27         1309  
22 27     27   131 use constant OUT => 1<<3;
  27         47  
  27         1185  
23 27     27   129 use constant EOF => 1<<4;
  27         43  
  27         4424  
24 27     27   131 use constant SENT => 1<<5;
  27         43  
  27         1212  
25              
26             # Timeouts:
27 27     27   123 use constant TOCONNECT => 30;
  27         57  
  27         1159  
28 27     27   128 use constant TOWRITE => 30;
  27         53  
  27         1524  
29              
30             # Custom errors:
31 27     27   127 use constant EINBUFLIMIT => dualvar(-100, 'in_buf_limit reached');
  27         43  
  27         1797  
32 27     27   130 use constant ETORESOLVE => dualvar(-101, 'dns timeout');
  27         44  
  27         1541  
33 27     27   130 use constant ETOCONNECT => dualvar(-102, 'connect timeout');
  27         41  
  27         1486  
34 27     27   130 use constant ETOWRITE => dualvar(-103, 'write timeout');
  27         40  
  27         1554  
35 27     27   148 use constant EDNS => dualvar(-200, 'dns error');
  27         47  
  27         1577  
36 27     27   133 use constant EDNSNXDOMAIN => dualvar(-201, 'dns nxdomain');
  27         40  
  27         1513  
37 27     27   129 use constant EDNSNODATA => dualvar(-202, 'dns nodata');
  27         43  
  27         1475  
38 27     27   126 use constant EREQINBUFLIMIT => dualvar(-300, 'in_buf_limit required');
  27         83  
  27         1534  
39 27     27   467 use constant EREQINEOF => dualvar(-301, 'IN or EOF required in wait_for');
  27         65  
  27         1802  
40              
41             # Cache for speed:
42             ## no critic (ProhibitStringyEval RequireCheckingReturnValueOfEval ProhibitImplicitNewlines)
43 27     27   148 BEGIN { if (!WIN32) { eval '
  27     27   1952  
  27     27   151  
  27         59  
  27         1330  
  27         128  
  27         46  
  27         1622  
44             use constant F_SETFL => Fcntl::F_SETFL();
45             use constant O_NONBLOCK => Fcntl::O_NONBLOCK();
46             '} else { eval '
47             use constant FIONBIO => 0x8004667E;
48             '}}
49             ## use critic
50 27     27   130 use constant PROTO_TCP => scalar getprotobyname 'tcp';
  27         62  
  27         22487  
51 27     27   170 use constant AF_INET => Socket::AF_INET();
  27         50  
  27         1360  
52 27     27   135 use constant SOCK_STREAM => Socket::SOCK_STREAM();
  27         50  
  27         1767  
53              
54              
55             sub import {
56 54     54   150 my $pkg = caller;
57 27     27   144 no strict 'refs';
  27         45  
  27         2973  
58 54         640 for my $const (qw(
59              
60             WIN32 BUFSIZE
61              
62             EAGAIN
63              
64             RESOLVED CONNECTED IN OUT EOF SENT
65              
66             TOCONNECT TOWRITE
67              
68             EINBUFLIMIT ETORESOLVE ETOCONNECT ETOWRITE
69             EDNS EDNSNXDOMAIN EDNSNODATA
70             EREQINBUFLIMIT EREQINEOF
71              
72             F_SETFL O_NONBLOCK FIONBIO PROTO_TCP AF_INET SOCK_STREAM
73              
74             )) {
75 1404         1562 *{"${pkg}::$const"} = \&{$const};
  1404         4137  
  1404         2620  
76             }
77 54         1364 return;
78             }
79              
80              
81             1;