IO-Handle-Record

 view release on metacpan or  search on metacpan

lib/IO/Handle/Record.pm  view on Meta::CPAN

use 5.008008;
use strict;
use warnings;
use Storable;
use Class::Member::GLOB qw/record_opts
			   read_buffer expected expect_fds received_fds
			   end_of_input _received_fds
			   write_buffer fds_to_send written/;
use Errno qw/EAGAIN EINTR/;
use Carp;
my $have_inet6;
BEGIN {
  eval {
    require Socket6;
    $have_inet6=1;
  };
};
use Socket;
require XSLoader;

our $VERSION = '0.15';
XSLoader::load('IO::Handle::Record', $VERSION);

use constant {
  HEADERLENGTH=>8,		# 2 unsigned long

lib/IO/Handle/Record.pm  view on Meta::CPAN

  }

  my $obj=bless IO::Handle->new_from_fd($fd, $flags),
                IO::Handle::Record::typeof($fd);

  if( ref($obj)=~/Socket/ ) {
    ${*$obj}{io_socket_domain}=socket_family($fd);
    ${*$obj}{io_socket_type}=socket_type($fd);

    if($obj->sockdomain==AF_INET or
       ($have_inet6 and $obj->sockdomain==&Socket6::AF_INET6) ) {
      if($obj->socktype==SOCK_STREAM) {
	${*$obj}{io_socket_proto}=&Socket::IPPROTO_TCP;
      } elsif($obj->socktype==SOCK_DGRAM) {
	${*$obj}{io_socket_proto}=&Socket::IPPROTO_UDP;
      } elsif($obj->socktype==SOCK_RAW) {
	${*$obj}{io_socket_proto}=&Socket::IPPROTO_ICMP;
      }
    }
  }



( run in 0.250 second using v1.01-cache-2.11-cpan-87723dcf8b7 )