ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/AnyEvent-MP/MP/Transport.pm
(Generate patch)

Comparing cvsroot/AnyEvent-MP/MP/Transport.pm (file contents):
Revision 1.50 by root, Sat Sep 5 23:06:19 2009 UTC vs.
Revision 1.51 by root, Mon Sep 7 20:00:38 2009 UTC

74 74
75sub mp_connect { 75sub mp_connect {
76 my $release = pop; 76 my $release = pop;
77 my ($host, $port, @args) = @_; 77 my ($host, $port, @args) = @_;
78 78
79 my $state;
80
81 $state = AnyEvent::Socket::tcp_connect $host, $port, my$x=sub {
82 my ($fh, $nhost, $nport) = @_;
83
84 return $release->() unless $fh;
85
86 $state = new AnyEvent::MP::Transport 79 new AnyEvent::MP::Transport
87 fh => $fh, 80 connect => [$host, $port],
88 peername => $host,
89 peerhost => $nhost,
90 peerport => $nport,
91 release => $release, 81 release => $release,
92 @args, 82 @args,
93 ;
94 }; 83 ;
95
96 \$state
97} 84}
98 85
99=item new AnyEvent::MP::Transport 86=item new AnyEvent::MP::Transport
100 87
101 # immediately starts negotiation 88 # immediately starts negotiation
151 verify_require_client_cert => 1, 138 verify_require_client_cert => 1,
152 }; 139 };
153 } 140 }
154 141
155 $self->{hdl} = new AnyEvent::Handle 142 $self->{hdl} = new AnyEvent::Handle
156 fh => delete $self->{fh}, 143 ($self->{fh} ? (fh => $self->{fh}) : (connect => $self->{connect})),
157 autocork => 1, 144 autocork => 1,
158 no_delay => 1, 145 no_delay => 1,
159 keepalive => 1, 146 keepalive => 1,
160 on_error => sub { 147 on_error => sub {
161 $self->error ($_[2]); 148 $self->error ($_[2]);
162 }, 149 },
150 on_connect => sub {
151 $self->{peerhost} = $_[1];
152 $self->{peerport} = $_[2];
153 $self->{peeraddr} = AnyEvent::Socket::format_hostport $_[1], $_[2];
154 },
163 rtimeout => $timeout, 155 rtimeout => $timeout,
164 peername => delete $self->{peername},
165 ; 156 ;
166 157
167 my $greeting_kv = $self->{greeting} ||= {}; 158 my $greeting_kv = $self->{greeting} ||= {};
168 159
169 $self->{local_node} ||= $AnyEvent::MP::Kernel::NODE; 160 $self->{local_node} ||= $AnyEvent::MP::Kernel::NODE;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines