… | |
… | |
113 | peername => $peername, # for verification |
113 | peername => $peername, # for verification |
114 | ; |
114 | ; |
115 | |
115 | |
116 | =cut |
116 | =cut |
117 | |
117 | |
|
|
118 | our @FRAMING_WANT = qw(json storable);#d##TODO# |
|
|
119 | |
118 | sub new { |
120 | sub new { |
119 | my ($class, %arg) = @_; |
121 | my ($class, %arg) = @_; |
120 | |
122 | |
121 | my $self = bless \%arg, $class; |
123 | my $self = bless \%arg, $class; |
122 | |
124 | |
… | |
… | |
134 | unless exists $arg{secret}; |
136 | unless exists $arg{secret}; |
135 | |
137 | |
136 | $self->{hdl} = new AnyEvent::Handle |
138 | $self->{hdl} = new AnyEvent::Handle |
137 | fh => delete $arg{fh}, |
139 | fh => delete $arg{fh}, |
138 | rbuf_max => 64 * 1024, |
140 | rbuf_max => 64 * 1024, |
|
|
141 | autocork => 1, |
|
|
142 | no_delay => 1, |
139 | on_error => sub { |
143 | on_error => sub { |
140 | $self->error ($_[2]); |
144 | $self->error ($_[2]); |
141 | }, |
145 | }, |
142 | peername => delete $arg{peername}, |
146 | peername => delete $arg{peername}, |
143 | ; |
147 | ; |
… | |
… | |
238 | } |
242 | } |
239 | |
243 | |
240 | sub error { |
244 | sub error { |
241 | my ($self, $msg) = @_; |
245 | my ($self, $msg) = @_; |
242 | |
246 | |
|
|
247 | if ($self->{node} && $self->{node}{transport} == $self) { |
|
|
248 | $self->{node}->clr_transport; |
|
|
249 | } |
243 | $self->{on_error}($self, $msg); |
250 | # $self->{on_error}($self, $msg); |
244 | $self->{hdl}->destroy; |
251 | $self->destroy; |
245 | } |
252 | } |
246 | |
253 | |
247 | sub connected { |
254 | sub connected { |
248 | my ($self) = @_; |
255 | my ($self) = @_; |
249 | |
256 | |
250 | (AnyEvent::MP::add_node ($self->{remote_node})) |
257 | my $node = AnyEvent::MP::add_node ($self->{remote_node}); |
|
|
258 | Scalar::Util::weaken ($self->{node} = $node); |
251 | ->set_transport ($self); |
259 | $node->set_transport ($self); |
252 | } |
260 | } |
253 | |
261 | |
254 | sub send { |
262 | sub send { |
255 | $_[0]{hdl}->push_write ($_[0]{s_framing} => $_[1]); |
263 | $_[0]{hdl}->push_write ($_[0]{s_framing} => $_[1]); |
256 | } |
264 | } |