Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
small optimizations
  • Loading branch information
kraih committed Sep 3, 2012
1 parent aedf3c2 commit b8fb859
Show file tree
Hide file tree
Showing 15 changed files with 45 additions and 80 deletions.
9 changes: 5 additions & 4 deletions lib/Mojo/Asset/Memory.pm
Expand Up @@ -22,11 +22,13 @@ sub add_chunk {
}

sub contains {
my $self = shift;
my $self = shift;

my $start = $self->start_range;
my $pos = index $self->{content}, shift, $start;
my $pos = index $self->{content}, shift, $start;
$pos -= $start if $start && $pos >= 0;
my $end = $self->end_range;

return $end && $pos >= $end ? -1 : $pos;
}

Expand All @@ -44,8 +46,7 @@ sub get_chunk {

sub move_to {
my ($self, $path) = @_;
spurt $self->{content}, $path;
return $self;
return $self->tap(sub { spurt $_->{content}, $path });
}

sub size { length shift->{content} }
Expand Down
15 changes: 6 additions & 9 deletions lib/Mojo/ByteStream.pm
Expand Up @@ -20,9 +20,8 @@ my @UTILS = (
for my $name (@UTILS) {
my $sub = Mojo::Util->can($name);
*{__PACKAGE__ . "::$name"} = sub {
my $self = shift;
$$self = $sub->($$self, @_);
return $self;
my ($self, @args) = @_;
return $self->tap(sub { $$_ = $sub->($$_, @args) });
};
}
}
Expand All @@ -40,15 +39,13 @@ sub clone {
}

sub decode {
my $self = shift;
$$self = Mojo::Util::decode shift || 'UTF-8', $$self;
return $self;
my ($self, $e) = @_;
return $self->tap(sub { $$_ = Mojo::Util::decode $e || 'UTF-8', $$_ });
}

sub encode {
my $self = shift;
$$self = Mojo::Util::encode shift || 'UTF-8', $$self;
return $self;
my ($self, $e) = @_;
return $self->tap(sub { $$_ = Mojo::Util::encode $e || 'UTF-8', $$_ });
}

sub say {
Expand Down
12 changes: 5 additions & 7 deletions lib/Mojo/DOM.pm
Expand Up @@ -163,9 +163,8 @@ sub parent {
}

sub parse {
my $self = shift;
$self->[0]->parse(@_);
return $self;
my ($self, @args) = @_;
return $self->tap(sub { $_->[0]->parse(@args) });
}

sub prepend { shift->_add(0, @_) }
Expand Down Expand Up @@ -338,10 +337,9 @@ sub _parse {
}

sub _parser {
my ($self, $method) = (shift, shift);
return $self->[0]->$method unless @_;
$self->[0]->$method(shift);
return $self;
my ($self, $method, @args) = @_;
return $self->[0]->$method unless @args;
return $self->tap(sub { $_->[0]->$method(@args) });
}

sub _text {
Expand Down
9 changes: 3 additions & 6 deletions lib/Mojo/Home.pm
Expand Up @@ -18,10 +18,8 @@ sub detect {
my $self = shift;

# Environment variable
if ($ENV{MOJO_HOME}) {
$self->{parts} = [splitdir(abs_path $ENV{MOJO_HOME})];
return $self;
}
return $self->tap(sub { $_->{parts} = [splitdir(abs_path $ENV{MOJO_HOME})] })
if $ENV{MOJO_HOME};

# Try to find home from lib directory
if (my $class = @_ ? shift : 'Mojo::HelloWorld') {
Expand Down Expand Up @@ -74,8 +72,7 @@ sub mojo_lib_dir { catdir(dirname(__FILE__), '..') }
sub parse {
my ($self, $path) = @_;
return $self unless defined $path;
$self->{parts} = [splitdir $path];
return $self;
return $self->tap(sub { $_->{parts} = [splitdir $path] });
}

sub rel_dir { catdir(@{shift->{parts} || []}, split '/', shift) }
Expand Down
12 changes: 4 additions & 8 deletions lib/Mojo/Server/Daemon.pm
Expand Up @@ -43,8 +43,7 @@ sub setuidgid {
sub start {
my $self = shift;
$self->_listen($_) for @{$self->listen};
$self->ioloop->max_connections($self->max_clients);
return $self;
return $self->tap(sub { $_->ioloop->max_connections($_->max_clients) });
}

sub _build_tx {
Expand All @@ -69,8 +68,7 @@ sub _build_tx {
$tx->on(
upgrade => sub {
my ($tx, $ws) = @_;
$ws->server_handshake;
$self->{connections}{$id}{ws} = $ws;
$self->{connections}{$id}{ws} = $ws->tap(sub { $_->server_handshake });
}
);
$tx->on(
Expand Down Expand Up @@ -215,8 +213,7 @@ sub _read {

sub _remove {
my ($self, $id) = @_;
$self->ioloop->remove($id);
$self->_close($id);
$self->tap(sub { $_->ioloop->remove($id) })->_close($id);
}

sub _user {
Expand All @@ -242,8 +239,7 @@ sub _write {
warn "-- Server >>> Client (@{[$tx->req->url->to_abs]})\n$chunk\n" if DEBUG;

# Write chunk
my $stream = $self->ioloop->stream($id);
$stream->write($chunk);
my $stream = $self->ioloop->stream($id)->write($chunk);

# Finish or continue writing
weaken $self;
Expand Down
12 changes: 4 additions & 8 deletions lib/Mojo/Transaction/HTTP.pm
Expand Up @@ -19,10 +19,8 @@ sub client_read {
$self->{state} = 'finished' if $res->is_finished;

# Unexpected 100 Continue
if ($self->{state} eq 'finished' && ($res->code // '') eq '100') {
$self->res($res->new);
$self->{state} = $preserved;
}
$self->tap(sub { $_->{state} = $preserved })->res($res->new)
if $self->{state} eq 'finished' && ($res->code // '') eq '100';

# Check for errors
$self->{state} = 'finished' if $self->error;
Expand Down Expand Up @@ -90,10 +88,8 @@ sub server_read {
$self->{state} ||= 'read';

# Parser error
my $res = $self->res;
if ($req->error && !$self->{handled}++) {
$self->emit('request');
$res->headers->connection('close');
$self->emit('request')->res->headers->connection('close');
}

# EOF
Expand All @@ -108,7 +104,7 @@ sub server_read {
elsif ($req->content->is_parsing_body && !defined $self->{continued}) {
return unless ($req->headers->expect || '') =~ /100-continue/i;
$self->{state} = 'write';
$res->code(100);
$self->res->code(100);
$self->{continued} = 0;
}
}
Expand Down
4 changes: 1 addition & 3 deletions lib/Mojo/Transaction/WebSocket.pm
Expand Up @@ -184,9 +184,7 @@ sub req { shift->handshake->req }
sub res { shift->handshake->res }

sub resume {
my $self = shift;
$self->handshake->resume;
return $self;
shift->tap(sub { $_->handshake->resume });
}

sub send {
Expand Down
5 changes: 2 additions & 3 deletions lib/Mojo/Upload.pm
Expand Up @@ -10,9 +10,8 @@ has [qw(filename name)];
has headers => sub { Mojo::Headers->new };

sub move_to {
my $self = shift;
$self->asset->move_to(@_);
return $self;
my ($self, @args) = @_;
return $self->tap(sub { $_->asset->move_to(@args) });
}

sub size { shift->asset->size }
Expand Down
3 changes: 1 addition & 2 deletions lib/Mojo/UserAgent.pm
Expand Up @@ -501,8 +501,7 @@ sub _write {
warn "-- Client >>> Server (@{[$tx->req->url->to_abs]})\n$chunk\n" if DEBUG;

# Write chunk
my $stream = $self->_loop->stream($id);
$stream->write($chunk);
my $stream = $self->_loop->stream($id)->write($chunk);
$self->_handle($id) if $tx->is_finished;

# Continue writing
Expand Down
3 changes: 1 addition & 2 deletions lib/Mojolicious.pm
Expand Up @@ -152,8 +152,7 @@ sub handler {
# Process
unless (eval { $self->plugins->emit_chain(around_dispatch => $c) }) {
$self->log->fatal("Processing request failed: $@");
$tx->res->code(500);
$tx->resume;
$tx->tap(sub { $_->res->code(500) })->resume;
}

# Delayed
Expand Down
4 changes: 1 addition & 3 deletions lib/Mojolicious/Controller.pm
Expand Up @@ -269,9 +269,7 @@ sub rendered {
$app->plugins->emit_hook_reverse(after_dispatch => $self);
$app->sessions->store($self);
}
$self->tx->resume;

return $self;
return $self->tap(sub { $_->tx->resume });
}

sub req { shift->tx->req }
Expand Down
6 changes: 2 additions & 4 deletions lib/Mojolicious/Renderer.pm
Expand Up @@ -29,14 +29,12 @@ sub new {

sub add_handler {
my ($self, $name, $cb) = @_;
$self->handlers->{$name} = $cb;
return $self;
return $self->tap(sub { $_->handlers->{$name} = $cb });
}

sub add_helper {
my ($self, $name, $cb) = @_;
$self->helpers->{$name} = $cb;
return $self;
return $self->tap(sub { $_->helpers->{$name} = $cb });
}

sub get_data_template {
Expand Down
15 changes: 4 additions & 11 deletions lib/Mojolicious/Routes/Route.pm
Expand Up @@ -91,10 +91,8 @@ sub name {

# Custom names have precedence
return $self->{name} unless @_;
$self->{name} = shift;
$self->{custom} = 1;

return $self;
$self->{name} = shift;
return $self->tap(sub { $_->{custom} = 1 });
}

sub options { shift->_generate_route(OPTIONS => @_) }
Expand All @@ -107,9 +105,7 @@ sub over {
my $conditions = ref $_[0] eq 'ARRAY' ? $_[0] : [@_];
return $self unless @$conditions;
$self->{over} = $conditions;
$self->root->cache(0);

return $self;
return $self->tap(sub { $_->root->cache(0) });
}

sub parse {
Expand Down Expand Up @@ -228,10 +224,7 @@ sub via {
}

sub websocket {
my $self = shift;
my $route = $self->get(@_);
$route->{websocket} = 1;
return $route;
shift->get(@_)->tap(sub { $_->{websocket} = 1 });
}

sub _generate_route {
Expand Down
7 changes: 3 additions & 4 deletions lib/Mojolicious/Types.pm
Expand Up @@ -49,11 +49,10 @@ sub detect {
}

sub type {
my ($self, $ext) = (shift, shift);
my ($self, $ext, @args) = @_;
my $types = $self->types;
return ref $types->{$ext} ? $types->{$ext}[0] : $types->{$ext} unless @_;
$types->{$ext} = shift;
return $self;
return ref $types->{$ext} ? $types->{$ext}[0] : $types->{$ext} unless @args;
return $self->tap(sub { $types->{$ext} = shift @args });
}

1;
Expand Down
9 changes: 3 additions & 6 deletions t/mojo/websocket.t
Expand Up @@ -280,8 +280,7 @@ $finished = 0;
$ua->websocket(
'/subreq' => sub {
my $tx = pop;
$code = $tx->res->code;
$result = '';
$code = $tx->res->code;
$tx->on(
message => sub {
my ($tx, $msg) = @_;
Expand Down Expand Up @@ -312,8 +311,7 @@ $delay->begin;
$ua->websocket(
'/subreq' => sub {
my $tx = pop;
$code = $tx->res->code;
$result = '';
$code = $tx->res->code;
$tx->on(
message => sub {
my ($tx, $msg) = @_;
Expand All @@ -333,8 +331,7 @@ $delay->begin;
$ua->websocket(
'/subreq' => sub {
my $tx = pop;
$code2 = $tx->res->code;
$result2 = '';
$code2 = $tx->res->code;
$tx->on(
message => sub {
my ($tx, $msg) = @_;
Expand Down

0 comments on commit b8fb859

Please sign in to comment.