On Tue, 6 Feb 2007, Issac Goldstand wrote:

Randy Kobes wrote:
I'd be interested in any comments about these
packages, including their names. CGI::Apache2::Ajax
was tentatively chosen because, first of all, it only
provides CGI.pm-compatible methods that the above two Ajax-related
applications need, and also, CGI::Ajax
expects the CGI object to satisfy
   ref($cgi) =~ /^CGI.*/
Note though that, due to the nature of the APR::* modules
used, CGI::Apache2::Ajax can also be used in a CGI
environment. Thanks.


Maybe I'm missing something, but why not autodetect Apache2::Request +
mod_perl2 presence and fallback to CGI if it doesn't work?

Something like:

if (exists $ENV{MOD_PERL_API_VERSION} &&
   $ENV{MOD_PERL_API_VERSION} >= 2 &&
   eval {require Apache2::Request}) {
   ... mod_perl mode ...
} else {
   ... CGI mode ...
}

This type of check is done to see if one is running in a
mod_perl environment, and if so, the Apache2::RequestRec
object $r is used for things like setting the content-type
header. For fetching parameters, however, Apache2::Request
can also be used in a CGI environment, which may be
useful for applications for which speed and/or memory
is a concern. Thus, CGI::Apache2::Ajax relies completely
on mod_perl2 and libapreq2, the intent being that it's
up to the package needing these methods to use CGI if
CGI::Apache2::Ajax isn't available (which Apache2-Ajax
and Apache2-Autocomplete do).

--
best regards,
Randy

Reply via email to