File Coverage

blib/lib/IO/Stream/const.pm
Criterion Covered Total %
statement 109 109 100.0
branch 1 2 50.0
condition n/a
subroutine 36 36 100.0
pod n/a
total 146 147 99.3


line stmt bran cond sub pod time code
1             package IO::Stream::const;
2 27     27   4434 use 5.010001;
  27         84  
3 27     27   103 use warnings;
  27         80  
  27         682  
4 27     27   115 use strict;
  27         75  
  27         667  
5 27     27   1440 use utf8;
  27         88  
  27         162  
6 27     27   688 use Carp;
  27         38  
  27         1832  
7              
8             our $VERSION = 'v2.0.3';
9              
10 27     27   157 use Scalar::Util qw( dualvar );
  27         61  
  27         1743  
11 27     27   3797 use Errno qw( EAGAIN );
  27         10996  
  27         1347  
12 27     27   134 use Fcntl ();
  27         44  
  27         363  
13 27     27   4424 use Socket ();
  27         32486  
  27         1551  
14              
15              
16 27 50   27   147 use constant WIN32 => $^O =~ /Win32/msi ? 1 : 0;
  27         44  
  27         1859  
17 27     27   133 use constant BUFSIZE => 8192;
  27         39  
  27         1245  
18              
19             # Events:
20 27     27   134 use constant RESOLVED => 1<<0;
  27         52  
  27         1119  
21 27     27   145 use constant CONNECTED => 1<<1;
  27         48  
  27         1104  
22 27     27   127 use constant IN => 1<<2;
  27         37  
  27         1003  
23 27     27   154 use constant OUT => 1<<3;
  27         37  
  27         1310  
24 27     27   121 use constant EOF => 1<<4;
  27         296  
  27         1062  
25 27     27   128 use constant SENT => 1<<5;
  27         51  
  27         1101  
26              
27             # Timeouts:
28 27     27   134 use constant TOCONNECT => 30;
  27         44  
  27         975  
29 27     27   110 use constant TOWRITE => 30;
  27         36  
  27         1177  
30              
31             # Custom errors:
32 27     27   130 use constant EINBUFLIMIT => dualvar(-100, 'in_buf_limit reached');
  27         58  
  27         1514  
33 27     27   145 use constant ETORESOLVE => dualvar(-101, 'dns timeout'); # unused, keep for compatibility
  27         49  
  27         1202  
34 27     27   135 use constant ETOCONNECT => dualvar(-102, 'connect timeout');
  27         52  
  27         1360  
35 27     27   126 use constant ETOWRITE => dualvar(-103, 'write timeout');
  27         55  
  27         1247  
36 27     27   133 use constant EDNS => dualvar(-200, 'dns error');
  27         42  
  27         1388  
37 27     27   123 use constant EDNSNXDOMAIN => dualvar(-201, 'dns nxdomain'); # unused, keep for compatibility
  27         36  
  27         1155  
38 27     27   121 use constant EDNSNODATA => dualvar(-202, 'dns nodata'); # unused, keep for compatibility
  27         42  
  27         1204  
39 27     27   137 use constant EREQINBUFLIMIT => dualvar(-300, 'in_buf_limit required');
  27         47  
  27         1372  
40 27     27   128 use constant EREQINEOF => dualvar(-301, 'IN or EOF required in wait_for');
  27         37  
  27         1437  
41              
42             # Cache for speed:
43             ## no critic (ProhibitStringyEval RequireCheckingReturnValueOfEval ProhibitImplicitNewlines)
44 27     27   68 BEGIN { if (!WIN32) { eval '
  27     27   1406  
  27     27   128  
  27         39  
  27         1103  
  27         124  
  27         48  
  27         1217  
45             use constant F_SETFL => Fcntl::F_SETFL();
46             use constant O_NONBLOCK => Fcntl::O_NONBLOCK();
47             '} else { eval '
48             use constant FIONBIO => 0x8004667E;
49             '}}
50             ## use critic
51 27     27   115 use constant PROTO_TCP => scalar getprotobyname 'tcp';
  27         40  
  27         11430  
52 27     27   154 use constant AF_INET => Socket::AF_INET();
  27         39  
  27         965  
53 27     27   136 use constant SOCK_STREAM => Socket::SOCK_STREAM();
  27         45  
  27         1499  
54              
55              
56             sub import {
57 55     55   235 my $pkg = caller;
58 27     27   151 no strict 'refs';
  27         40  
  27         2532  
59 55         690 for my $const (qw(
60              
61             WIN32 BUFSIZE
62              
63             EAGAIN
64              
65             RESOLVED CONNECTED IN OUT EOF SENT
66              
67             TOCONNECT TOWRITE
68              
69             EINBUFLIMIT ETORESOLVE ETOCONNECT ETOWRITE
70             EDNS EDNSNXDOMAIN EDNSNODATA
71             EREQINBUFLIMIT EREQINEOF
72              
73             F_SETFL O_NONBLOCK FIONBIO PROTO_TCP AF_INET SOCK_STREAM
74              
75             )) {
76 1430         1453 *{"${pkg}::$const"} = \&{$const};
  1430         2897  
  1430         1970  
77             }
78 55         1422 return;
79             }
80              
81              
82             1;