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   1823 use warnings;
  27         40  
  27         1097  
4 27     27   250 use strict;
  27         40  
  27         847  
5              
6 27     27   2033 use version; our $VERSION = qv('1.0.9');
  27         6580  
  27         178  
7              
8             # update DEPENDENCIES in POD & Makefile.PL & README
9 27     27   2536 use Scalar::Util qw( dualvar );
  27         52  
  27         1907  
10 27     27   6506 use Errno qw( EAGAIN );
  27         13586  
  27         2520  
11 27     27   151 use Fcntl ();
  27         39  
  27         449  
12 27     27   7694 use Socket ();
  27         37983  
  27         833  
13              
14              
15 27     27   176 use constant WIN32 => 0;
  27         34  
  27         3337  
16 27     27   141 use constant BUFSIZE => 8192;
  27         38  
  27         1408  
17              
18             # Events:
19 27     27   177 use constant RESOLVED => 1<<0;
  27         40  
  27         1551  
20 27     27   177 use constant CONNECTED => 1<<1;
  27         59  
  27         1955  
21 27     27   255 use constant IN => 1<<2;
  27         95  
  27         1552  
22 27     27   164 use constant OUT => 1<<3;
  27         37  
  27         1796  
23 27     27   141 use constant EOF => 1<<4;
  27         46  
  27         1680  
24 27     27   136 use constant SENT => 1<<5;
  27         50  
  27         2100  
25              
26             # Timeouts:
27 27     27   132 use constant TOCONNECT => 30;
  27         40  
  27         1168  
28 27     27   130 use constant TOWRITE => 30;
  27         31  
  27         1668  
29              
30             # Custom errors:
31 27     27   145 use constant EINBUFLIMIT => dualvar(-100, 'in_buf_limit reached');
  27         43  
  27         1979  
32 27     27   138 use constant ETORESOLVE => dualvar(-101, 'dns timeout');
  27         35  
  27         1561  
33 27     27   135 use constant ETOCONNECT => dualvar(-102, 'connect timeout');
  27         39  
  27         1559  
34 27     27   137 use constant ETOWRITE => dualvar(-103, 'write timeout');
  27         35  
  27         1513  
35 27     27   125 use constant EDNS => dualvar(-200, 'dns error');
  27         35  
  27         1567  
36 27     27   132 use constant EDNSNXDOMAIN => dualvar(-201, 'dns nxdomain');
  27         35  
  27         1626  
37 27     27   150 use constant EDNSNODATA => dualvar(-202, 'dns nodata');
  27         61  
  27         1703  
38 27     27   137 use constant EREQINBUFLIMIT => dualvar(-300, 'in_buf_limit required');
  27         32  
  27         1713  
39 27     27   511 use constant EREQINEOF => dualvar(-301, 'IN or EOF required in wait_for');
  27         43  
  27         2075  
40              
41             # Cache for speed:
42             ## no critic
43 27     27   52 BEGIN { if (!WIN32) { eval '
  27     27   4498  
  27     27   1438  
  27         42  
  27         1647  
  27         128  
  27         34  
  27         1787  
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   127 use constant PROTO_TCP => scalar getprotobyname 'tcp';
  27         48  
  27         18146  
51 27     27   185 use constant AF_INET => Socket::AF_INET();
  27         44  
  27         1587  
52 27     27   144 use constant SOCK_STREAM => Socket::SOCK_STREAM();
  27         47  
  27         1892  
53              
54              
55             sub import {
56 54     54   243 my $pkg = caller;
57 27     27   156 no strict 'refs';
  27         37  
  27         3091  
58 54         1017 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         1370 *{"${pkg}::$const"} = \&{$const};
  1404         3816  
  1404         2574  
76             }
77 54         1806 return;
78             }
79              
80              
81             1;