X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FRequest.pm;h=f75319b699f23a5e2f9cd327ec80136f217ca88a;hb=01733d0ff7d9b1b0677b86d7314d1e0e11ed67d5;hp=dce7a052691c6a57be7f123f95b6e0e0b1e907bb;hpb=d7f189232be6991bad0861a3d847d224475677df;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Request.pm b/lib/Catalyst/Request.pm index dce7a05..f75319b 100644 --- a/lib/Catalyst/Request.pm +++ b/lib/Catalyst/Request.pm @@ -91,6 +91,29 @@ has _log => ( required => 1, ); +has io_fh => ( + is=>'ro', + predicate=>'has_io_fh', + lazy=>1, + builder=>'_build_io_fh'); + +sub _build_io_fh { + my $self = shift; + return $self->env->{'psgix.io'} + || die "Your Server does not support psgix.io"; +}; + +has body_fh => ( + is=>'ro', + predicate=>'has_body_fh', + lazy=>1, + builder=>'_build_body_fh'); + +sub _build_body_fh { + (my $input_fh = shift->env->{'psgi.input'})->seek(0, 0); + return $input_fh; +}; + # Amount of data to read from input on each pass our $CHUNKSIZE = 64 * 1024; @@ -846,6 +869,12 @@ Returns the value of the C environment variable. Shortcut to $req->headers->user_agent. Returns the user agent (browser) version string. +=head2 $req->io_fh + +Returns a psgix.io bidirectional socket, if your server supports one. Used for +when you want to jailbreak out of PSGI and handle bidirectional client server +communication manually, such as when you are using cometd or websockets. + =head1 SETUP METHODS You should never need to call these yourself in application code,