Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
added experimental upgrade event to Mojo::Transaction::HTTP
  • Loading branch information
kraih committed Nov 10, 2011
1 parent 979ae06 commit d9acb0f
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 26 deletions.
1 change: 1 addition & 0 deletions Changes
Expand Up @@ -2,6 +2,7 @@ This file documents the revision history for Perl extension Mojolicious.

2.26 2011-11-10 00:00:00
- Added EXPERIMENTAL upgrade event to Mojo::Asset::Memory.
- Added EXPERIMENTAL upgrade event to Mojo::Transaction::HTTP.
- Improved Mojo::Content::Single and Mojo::Content::MultiPart parsers
to reuse events.
- Improved documentation.
Expand Down
22 changes: 9 additions & 13 deletions lib/Mojo/Server/Daemon.pm
Expand Up @@ -106,22 +106,18 @@ sub _build_tx {
# TLS
$tx->req->url->base->scheme('https') if $c->{tls};

# Handle
# Events
weaken $self;
$tx->on(
request => sub {
upgrade => sub {
my ($tx, $ws) = @_;

# WebSocket
if ($ws) {
$self->{connections}->{$id}->{websocket} = $ws->server_handshake;
$self->emit(request => $ws);
}

# HTTP
$self->emit(request => $tx);

# Resume
$self->{connections}->{$id}->{websocket} = $ws->server_handshake;
}
);
$tx->on(
request => sub {
my $c = $self->{connections}->{$id};
$self->emit(request => $c->{websocket} || $c->{transaction});
$tx->on(resume => sub { $self->_write($id) });
}
);
Expand Down
34 changes: 21 additions & 13 deletions lib/Mojo/Transaction/HTTP.pm
Expand Up @@ -172,15 +172,10 @@ sub server_read {

# EOF
elsif ((length $chunk == 0) || ($req->is_finished && !$self->{handled}++)) {

# WebSocket
if (($req->headers->upgrade || '') eq 'websocket') {
$self->emit(
request => Mojo::Transaction::WebSocket->new(handshake => $self));
}

# HTTP
else { $self->emit('request') }
$self->emit(
upgrade => Mojo::Transaction::WebSocket->new(handshake => $self))
if (($req->headers->upgrade || '') eq 'websocket');
$self->emit('request');
}

# Expect 100 Continue
Expand Down Expand Up @@ -337,18 +332,31 @@ can emit the following new ones.
=head2 C<request>
$tx->on(request => sub {
my ($tx, $ws) = @_;
my $tx = shift;
});
Emitted when a request is ready and needs to be handled, an optional
L<Mojo::Transaction::WebSocket> object will be passed for WebSocket handshake
requests.
Emitted when a request is ready and needs to be handled.
$tx->on(request => sub {
my $tx = shift;
$tx->res->headers->header('X-Bender', 'Bite my shiny metal ass!');
});
=head2 C<upgrade>
$tx->on(upgrade => sub {
my ($tx, $ws) = @_;
});
Emitted when transaction gets upgraded to a L<Mojo::Transaction::WebSocket>
object.
Note that this event is EXPERIMENTAL and might change without warning!.
$tx->on(upgrade => sub {
my ($tx, $ws) = @_;
$ws->res->headers->header('X-Bender', 'Bite my shiny metal ass!');
});
=head1 ATTRIBUTES
L<Mojo::Transaction::HTTP> inherits all attributes from L<Mojo::Transaction>.
Expand Down

0 comments on commit d9acb0f

Please sign in to comment.