Skip to content

Commit

Permalink
move server_read methods as well
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Jan 9, 2016
1 parent 419bf40 commit c7cd1af
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 52 deletions.
13 changes: 13 additions & 0 deletions lib/Mojo/Channel/HTTP/Server.pm
@@ -1,4 +1,17 @@
package Mojo::Channel::HTTP::Server;
use Mojo::Base 'Mojo::Channel::HTTP';

sub read {
my ($self, $chunk) = @_;

# Parse request
my $tx = $self->{tx};
my $req = $tx->req;
$req->parse($chunk) unless $req->error;
$tx->{state} ||= 'read';

# Generate response
$tx->emit('request') if $req->is_finished && !$tx->{handled}++;
}

1;
6 changes: 3 additions & 3 deletions lib/Mojo/Server/Daemon.pm
Expand Up @@ -144,8 +144,8 @@ sub _finish {

# Build new transaction for leftovers
return if (my $leftovers = $tx->req->content->leftovers) eq '';
$tx = $c->{tx} = $self->_build_tx($id, $c);
$tx->server_read($leftovers);
$c->{tx} = $self->_build_tx($id, $c);
$c->read($leftovers);
}

sub _listen {
Expand Down Expand Up @@ -208,7 +208,7 @@ sub _read {
my $c = $self->{connections}{$id};
my $tx = $c->{tx} ||= $self->_build_tx($id, $c);
warn term_escape "-- Server <<< Client (@{[_url($tx)]})\n$chunk\n" if DEBUG;
$tx->server_read($chunk);
$c->read($chunk);

# Last keep-alive request or corrupted connection
$tx->res->headers->connection('close')
Expand Down
9 changes: 0 additions & 9 deletions lib/Mojo/Transaction.pm
Expand Up @@ -58,7 +58,6 @@ sub remote_address {
sub resume { shift->_state(qw(write resume)) }
sub server_close { shift->_state(qw(finished finish)) }

sub server_read { croak 'Method "server_read" not implemented by subclass' }
sub server_write { croak 'Method "server_write" not implemented by subclass' }

sub success { $_[0]->error ? undef : $_[0]->res }
Expand All @@ -83,7 +82,6 @@ Mojo::Transaction - Transaction base class
use Mojo::Base 'Mojo::Transaction';
sub client_write {...}
sub server_read {...}
sub server_write {...}
=head1 DESCRIPTION
Expand Down Expand Up @@ -259,13 +257,6 @@ proxy.
Transaction closed server-side, used to implement web servers such as
L<Mojo::Server::Daemon>.
=head2 server_read
$tx->server_read($bytes);
Read data server-side, used to implement web servers such as
L<Mojo::Server::Daemon>. Meant to be overloaded in a subclass.
=head2 server_write
my $bytes = $tx->server_write;
Expand Down
19 changes: 0 additions & 19 deletions lib/Mojo/Transaction/HTTP.pm
Expand Up @@ -32,18 +32,6 @@ sub redirects {
return \@redirects;
}

sub server_read {
my ($self, $chunk) = @_;

# Parse request
my $req = $self->req;
$req->parse($chunk) unless $req->error;
$self->{state} ||= 'read';

# Generate response
$self->emit('request') if $req->is_finished && !$self->{handled}++;
}

sub server_write { shift->_write(1) }

sub _body {
Expand Down Expand Up @@ -265,13 +253,6 @@ transaction.
# Paths of all previous requests
say $_->req->url->path for @{$tx->redirects};
=head2 server_read
$tx->server_read($bytes);
Read data server-side, used to implement web servers such as
L<Mojo::Server::Daemon>.
=head2 server_write
my $bytes = $tx->server_write;
Expand Down
19 changes: 0 additions & 19 deletions lib/Mojo/Transaction/WebSocket.pm
Expand Up @@ -245,18 +245,6 @@ sub server_handshake {

sub server_open { shift->{open}++ }

sub server_read {
my ($self, $chunk) = @_;

$self->{read} .= $chunk // '';
while (my $frame = $self->parse_frame(\$self->{read})) {
$self->finish(1009) and last unless ref $frame;
$self->emit(frame => $frame);
}

$self->emit('resume');
}

sub server_write {
my $self = shift;

Expand Down Expand Up @@ -710,13 +698,6 @@ L<Mojo::Server::Daemon>.
WebSocket connection established server-side, used to implement web servers such
as L<Mojo::Server::Daemon>.
=head2 server_read
$ws->server_read($data);
Read data server-side, used to implement web servers such as
L<Mojo::Server::Daemon>.
=head2 server_write
my $bytes = $ws->server_write;
Expand Down
2 changes: 0 additions & 2 deletions t/mojo/transactor.t
Expand Up @@ -923,8 +923,6 @@ is $tx->res->headers->location, undef, 'no "Location" value';
# Abstract methods
eval { Mojo::Transaction->client_write };
like $@, qr/Method "client_write" not implemented by subclass/, 'right error';
eval { Mojo::Transaction->server_read };
like $@, qr/Method "server_read" not implemented by subclass/, 'right error';
eval { Mojo::Transaction->server_write };
like $@, qr/Method "server_write" not implemented by subclass/, 'right error';

Expand Down

0 comments on commit c7cd1af

Please sign in to comment.