The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Net::FastCGI::Constant - FastCGI protocol constants.

DESCRIPTION

FastCGI protocol constants.

CONSTANTS

Constants can either be imported individually or in sets grouped by tag names. The tag names are:

:common

FCGI_MAX_CONTENT_LEN

Maximum number of octets that the content component of the record can hold. (65535)

FCGI_HEADER_LEN

Number of octets in FCGI_Header. (8)

FCGI_VERSION_1

Value for version component of FCGI_Header. (1)

FCGI_NULL_REQUEST_ID

Value for request_id component of FCGI_Header. (0)

:type

Values for type component of FCGI_Header.

FCGI_BEGIN_REQUEST
FCGI_ABORT_REQUEST
FCGI_END_REQUEST
FCGI_PARAMS
FCGI_STDIN
FCGI_STDOUT
FCGI_STDERR
FCGI_DATA
FCGI_GET_VALUES
FCGI_GET_VALUES_RESULT
FCGI_UNKNOWN_TYPE
FCGI_MAXTYPE

:flag

Mask for flags component of FCGI_BeginRequestBody.

FCGI_KEEP_CONN

:role

Values for role component of FCGI_BeginRequestBody.

FCGI_RESPONDER
FCGI_AUTHORIZER
FCGI_FILTER

:protocol_status

Values for protocol_status component of FCGI_EndRequestBody.

FCGI_REQUEST_COMPLETE
FCGI_CANT_MPX_CONN
FCGI_OVERLOADED
FCGI_UNKNOWN_ROLE

:value

Variable names for FCGI_GET_VALUES / FCGI_GET_VALUES_RESULT records.

FCGI_MAX_CONNS
FCGI_MAX_REQS
FCGI_MPXS_CONNS

:pack

pack() / unpack() templates

FCGI_Header
Octet/      0        |        1        |
    /                |                 |
   | 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 |
   +-----------------+-----------------+
 0 |     Version     |      Type       |
   +-----------------+-----------------+
 2 |             Request ID            |
   +-----------------+-----------------+
 4 |          Content Length           |
   +-----------------+-----------------+
 6 | Padding Length  |    Reserved     |
   +-----------------+-----------------+
   Total 8 octets

Template: CCnnCx

my ($version, $type, $request_id, $content_length, $padding_length)
  = unpack(FCGI_Header, $octets);
FCGI_BeginRequestBody
Octet/      0        |        1        |
    /                |                 |
   | 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 |
   +-----------------+-----------------+
 0 |                Role               |
   +-----------------+-----------------+
 2 |      Flags      |                 |
   +-----------------+                 +
 4 |                                   |
   +              Reserved             +
 6 |                                   |
   +-----------------+-----------------+
   Total 8 octets

Template: nCx5

my ($role, $flags) = unpack(FCGI_BeginRequestBody, $octets);
FCGI_EndRequestBody
Octet/      0        |        1        |
    /                |                 |
   | 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 |
   +-----------------+-----------------+
 0 |                                   |
   +        Application Status         +
 2 |                                   |
   +-----------------+-----------------+
 4 | Protocol Status |                 |
   +-----------------+    Reserved     +
 6 |                                   |
   +-----------------+-----------------+
   Total 8 octets

Template: NCx3

my ($app_status, $protocol_status) 
  = unpack(FCGI_EndRequestBody, $octets);
FCGI_UnknownTypeBody
Octet/      0        |        1        |
    /                |                 |
   | 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 |
   +-----------------+-----------------+
 0 |  Unknown Type   |                 |
   +-----------------+                 +
 2 |                                   |
   +                                   +
 4 |              Reserved             |
   +                                   +
 6 |                                   |
   +-----------------+-----------------+
   Total 8 octets

Template: Cx7

my $unknown_type = unpack(FCGI_UnknownTypeBody, $octets);

:name

Arrays containing names of value components. These are read-only.

@FCGI_TYPE_NAME
print $FCGI_TYPE_NAME[FCGI_BEGIN_REQUEST]; # FCGI_BEGIN_REQUEST
@FCGI_ROLE_NAME
print $FCGI_ROLE_NAME[FCGI_RESPONDER]; # FCGI_RESPONDER
@FCGI_PROTOCOL_STATUS_NAME
print $FCGI_PROTOCOL_STATUS_NAME[FCGI_OVERLOADED]; # FCGI_OVERLOADED

Note

It's not safe to assume that exists works for validation purposes, index 0 might be undef.

Use boolean context instead:

($FCGI_TYPE_NAME[$type])
  || die;

EXPORTS

None by default. All functions can be exported using the :all tag or individually.

SEE ALSO

http://www.fastcgi.com/devkit/doc/fcgi-spec.html

AUTHOR

Christian Hansen chansen@cpan.org

COPYRIGHT

Copyright 2008-2010 by Christian Hansen.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.