… | |
… | |
32 | sub new { |
32 | sub new { |
33 | my $class = shift; |
33 | my $class = shift; |
34 | my $self = bless { |
34 | my $self = bless { |
35 | mapw => 13, |
35 | mapw => 13, |
36 | maph => 13, |
36 | maph => 13, |
37 | max_outstanding => 2, |
37 | max_outstanding => 6, |
38 | token => "a0", |
38 | token => "a0", |
39 | @_ |
39 | @_ |
40 | }, $class; |
40 | }, $class; |
41 | |
41 | |
42 | $self->{fh} = new IO::Socket::INET PeerHost => $self->{host}, PeerPort => $self->{port} |
42 | $self->{fh} = new IO::Socket::INET PeerHost => $self->{host}, PeerPort => $self->{port} |
… | |
… | |
586 | sub send_mapinfo { |
586 | sub send_mapinfo { |
587 | my ($self, $data, $cb) = @_; |
587 | my ($self, $data, $cb) = @_; |
588 | |
588 | |
589 | my $token = ++$self->{token}; |
589 | my $token = ++$self->{token}; |
590 | |
590 | |
591 | $self->{mapinfo_cb}{$token} = $cb; |
591 | $self->{mapinfo_cb}{$token} = sub { |
|
|
592 | $self->send_queue; |
|
|
593 | $cb->(@_); |
|
|
594 | }; |
592 | $self->send ("mapinfo $token $data"); |
595 | $self->send_queue ("mapinfo $token $data"); |
593 | } |
596 | } |
594 | |
597 | |
595 | sub feed_image { |
598 | sub feed_image { |
596 | my ($self, $data) = @_; |
599 | my ($self, $data) = @_; |
597 | |
600 | |
… | |
… | |
721 | --$self->{outstanding}; |
724 | --$self->{outstanding}; |
722 | } |
725 | } |
723 | |
726 | |
724 | if ($self->{outstanding} < $self->{max_outstanding} && @{ $self->{send_queue} }) { |
727 | if ($self->{outstanding} < $self->{max_outstanding} && @{ $self->{send_queue} }) { |
725 | ++$self->{outstanding}; |
728 | ++$self->{outstanding}; |
726 | $self->send (pop @{ $self->{send_queue} }); |
729 | $self->send (shift @{ $self->{send_queue} }); |
727 | } |
730 | } |
728 | } |
731 | } |
729 | |
732 | |
730 | sub send_setup { |
733 | sub send_setup { |
731 | my ($self) = @_; |
734 | my ($self) = @_; |