ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro/Event/Socket.pm
(Generate patch)

Comparing Coro/Event/Socket.pm (file contents):
Revision 1.38 by root, Wed Feb 1 23:59:41 2006 UTC vs.
Revision 1.39 by root, Sat Nov 4 01:31:57 2006 UTC

27 27
28=cut 28=cut
29 29
30package Coro::Socket; 30package Coro::Socket;
31 31
32BEGIN { eval { require warnings } && warnings->unimport ("uninitialized") } 32no warnings "uninitialized";
33
34use strict;
33 35
34use Errno (); 36use Errno ();
35use Carp qw(croak); 37use Carp qw(croak);
36use Socket; 38use Socket;
37 39
38use Coro::Util (); 40use Coro::Util ();
39 41
40use base 'Coro::Handle'; 42use base 'Coro::Handle';
41 43
42$VERSION = 1.9; 44our $VERSION = 1.9;
45
46our (%_proto, %_port);
43 47
44sub _proto($) { 48sub _proto($) {
45 $_proto{$_[0]} ||= do { 49 $_proto{$_[0]} ||= do {
46 ((getprotobyname $_[0])[2] || (getprotobynumber $_[0])[2]) 50 ((getprotobyname $_[0])[2] || (getprotobynumber $_[0])[2])
47 or croak "unsupported protocol: $_[0]"; 51 or croak "unsupported protocol: $_[0]";
100 my $fh; 104 my $fh;
101 105
102 socket $fh, PF_INET, $arg->{Type}, _proto($arg->{Proto}) 106 socket $fh, PF_INET, $arg->{Type}, _proto($arg->{Proto})
103 or return; 107 or return;
104 108
105 $fh = bless Coro::Handle->new_from_fh($fh, timeout => $arg{Timeout}), $class 109 $fh = bless Coro::Handle->new_from_fh (
110 $fh,
111 timeout => $arg->{Timeout},
112 forward_class => $arg->{forward_class},
113 ), $class
106 or return; 114 or return;
107 115
108 if ($arg->{ReuseAddr}) { 116 if ($arg->{ReuseAddr}) {
109 $fh->setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) 117 $fh->setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
110 or croak "setsockopt(SO_REUSEADDR): $!"; 118 or croak "setsockopt(SO_REUSEADDR): $!";

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines