Feersum::Connection






Feersum::Connection − HTTP connection encapsulation

For a streaming response:

         Feersum−>endjinn−>request_handler(sub {
        my $req = shift; # this is a Feersum::Connection object
        my $env = $req−>env();
        my $w = $req−>start_streaming(200, ['Content−Type' => 'text/plain']);
        # then immediately or after some time:
        $w−>write("Ergrates ");
        $w−>write(\"FTW.");
        $w−>close();
    });

     For a response with a Content‐Length header:

         Feersum−>endjinn−>request_handler(sub {
        my $req = shift; # this is a Feersum::Connection object
        my $env = $req−>env();
        $req−>start_whole_response(200, ['Content−Type' => 'text/plain']);
        $req−>write_whole_body(\"Ergrates FTW.");
    });

Encapsulates an HTTP connection to Feersum.  It’s roughly
analogous to an "Apache::Request" or "Apache2::Connection"
object, but differs significantly in functionality.

     Until Keep‐Alive functionality is supported (if ever)
this means that a connection is also a request.

     See Feersum for more examples on usage.



"my $env = $req−>env()"
    Obtain an environment hash.  This hash contains the same
    entries as for a PSGI handler environment hash.  See
    Feersum for details on the contents.

    This is a method instead of a parameter so that future
    versions of Feersum can request a slice of the hash for
    speed.

"my $w = $req−>start_streaming($code, \@headers)"
    A full HTTP header section is sent with "Transfer‐
    Encoding: chunked" (or "Connection: close" for HTTP/1.0
    clients).

    Returns a "Feersum::Connection::Writer" handle which
    should be used to complete the response.  See
    Feersum::Connection::Handle for methods.

"$req−>send_response($code, \@headers, $body)"










                             ‐2‐


"$req−>send_response($code, \@headers, \@body)"
    Respond with a full HTTP header (including
    "Content−Length") and body.

    Returns the number of bytes calculated for the body.

"$req−>force_http10"

"$req−>force_http11"
    Force the response to use HTTP/1.0 or HTTP/1.1,
    respectively.

    Normally, if the request was made with 1.1 then Feersum
    uses HTTP/1.1 for the response, otherwise HTTP/1.0 is
    used (this includes requests made with the HTTP "0.9"
    non‐declaration).

    For streaming under HTTP/1.1 "Transfer−Encoding:
    chunked" is used, otherwise a "Connection: close"
    stream‐style is used (with the usual non‐guarantees
    about delivery).  You may know about certain user‐agents
    that support/don’t−support T−E:chunked, so this is how
    you can override that.

    Supposedly clients and a lot of proxies support the
    "Connection: close" stream‐style, see support in Varnish
    at http://www.varnish−cache.org/trac/ticket/400

"$req−>fileno"
    The socket file‐descriptor number for this connection.

"$req−>response_guard($guard)"
    Register a guard to be triggered when the response is
    completely sent and the socket is closed.  A "guard" in
    this context is some object that will do something
    interesting in its DESTROY/DEMOLISH method. For example,
    Guard.

Jeremy Stashewsky, "stash@cpan.org"

Copyright (C) 2010 by Jeremy Stashewsky & Socialtext Inc.

     This library is free software; you can redistribute it
and/or modify it under the same terms as Perl itself, either
Perl version 5.8.7 or, at your option, any later version of
Perl 5 you may have available.