From 1159cebcfaf3cb44a26aaaab3f3813b6d4602b43 Mon Sep 17 00:00:00 2001 From: Sebastian Riedel Date: Wed, 12 Oct 2011 02:00:40 +0200 Subject: [PATCH] removed transaction and upgrade events from Mojo::Server --- lib/Mojo/Server.pm | 66 ++++++++++-------------------------- lib/Mojo/Server/CGI.pm | 2 +- lib/Mojo/Server/Daemon.pm | 5 ++- lib/Mojo/Server/PSGI.pm | 2 +- lib/Mojo/Transaction/HTTP.pm | 2 +- 5 files changed, 23 insertions(+), 54 deletions(-) diff --git a/lib/Mojo/Server.pm b/lib/Mojo/Server.pm index fc50a4a325..5237e45749 100644 --- a/lib/Mojo/Server.pm +++ b/lib/Mojo/Server.pm @@ -17,26 +17,14 @@ has app_class => sub new { my $self = shift->SUPER::new(@_); - - # Events $self->on_request(sub { shift->app->handler(shift) }); - $self->on_transaction( - sub { - my ($self, $txref) = @_; - $$txref = $self->app->build_tx; - } - ); - $self->on_upgrade( - sub { - my ($self, $txref) = @_; - $$txref = $self->app->upgrade_tx($$txref); - $$txref->server_handshake; - } - ); - return $self; } +sub build_tx { shift->app->build_tx } + +sub upgrade_tx { shift->app->upgrade_tx(shift)->server_handshake } + sub load_app { my ($self, $file) = @_; @@ -65,9 +53,7 @@ EOF return $app; } -sub on_request { shift->on(request => shift) } -sub on_transaction { shift->on(transaction => shift) } -sub on_upgrade { shift->on(upgrade => shift) } +sub on_request { shift->on(request => shift) } # "Are you saying you're never going to eat any animal again? What about # bacon? @@ -94,7 +80,7 @@ Mojo::Server - HTTP server base class my $self = shift; # Get a transaction - $self->emit(transaction => \(my $tx)); + my $tx = $self->build_tx; # Emit request $self->emit(request => $tx); @@ -116,22 +102,6 @@ L can emit the following events. Emitted for requests that need a response. -=head2 C - - $server->on(request => sub { - my ($server, $txref) = @_; - }); - -Emitted when a new transaction is needed. - -=head2 C - - $server->on(upgrade => sub { - my ($server, $txref) = @_; - }); - -Emitted when a transaction needs to be upgraded. - =head1 ATTRIBUTES L implements the following attributes. @@ -162,6 +132,12 @@ implements the following new ones. Construct a new L object. +=head2 C + + my $tx = $server->build_tx; + +Let application build a transaction. + =head2 C my $app = $server->load_app('./myapp.pl'); @@ -177,24 +153,18 @@ Note that this method is EXPERIMENTAL and might change without warning! Register C event. -=head2 C - - $server->on_transaction(sub {...}); - -Register C event. - -=head2 C - - $server->on_upgrade(sub {...}); - -Register C event. - =head2 C $server->run; Start server. +=head2 C + + my $ws = $server->upgrade_tx(tx); + +Let application upgrade transaction. + =head1 SEE ALSO L, L, L. diff --git a/lib/Mojo/Server/CGI.pm b/lib/Mojo/Server/CGI.pm index 276c403c20..1e0f4a55d8 100644 --- a/lib/Mojo/Server/CGI.pm +++ b/lib/Mojo/Server/CGI.pm @@ -12,7 +12,7 @@ sub run { my $self = shift; # Environment - $self->emit(transaction => \(my $tx)); + my $tx = $self->build_tx; my $req = $tx->req; $req->parse(\%ENV); diff --git a/lib/Mojo/Server/Daemon.pm b/lib/Mojo/Server/Daemon.pm index a0901feddb..47b824f467 100644 --- a/lib/Mojo/Server/Daemon.pm +++ b/lib/Mojo/Server/Daemon.pm @@ -88,7 +88,7 @@ sub _build_tx { my ($self, $id, $c) = @_; # Build transaction - $self->emit(transaction => \(my $tx)); + my $tx = $self->build_tx; $tx->connection($id); # Identify @@ -294,8 +294,7 @@ sub _upgrade { my ($self, $id, $txref) = @_; return unless $$txref->req->headers->upgrade =~ /WebSocket/i; my $c = $self->{connections}->{$id}; - $self->emit(upgrade => $txref); - $c->{websocket} = $$txref; + $c->{websocket} = $$txref = $self->upgrade_tx($$txref); } sub _user { diff --git a/lib/Mojo/Server/PSGI.pm b/lib/Mojo/Server/PSGI.pm index 3b41cf715e..400fa3d319 100644 --- a/lib/Mojo/Server/PSGI.pm +++ b/lib/Mojo/Server/PSGI.pm @@ -11,7 +11,7 @@ sub run { my ($self, $env) = @_; # Environment - $self->emit(transaction => \(my $tx)); + my $tx = $self->build_tx; my $req = $tx->req; $req->parse($env); diff --git a/lib/Mojo/Transaction/HTTP.pm b/lib/Mojo/Transaction/HTTP.pm index e8c4bdfb64..da94939bef 100644 --- a/lib/Mojo/Transaction/HTTP.pm +++ b/lib/Mojo/Transaction/HTTP.pm @@ -221,7 +221,7 @@ sub server_read { $self->emit(upgrade => \$ws) if $req->headers->upgrade; # Handle request - $self->emit(request => $ws->is_websocket ? $ws : $self); + $self->emit(request => $ws); # Protect handler from incoming pipelined requests $self->{handled} = 1;