internal package Foswiki::Engine internal package Foswiki::Engine The engine class is a singleton that implements details about Foswiki's execution mode. This is the base class and implements basic behavior.
Each engine should inherits from this and overload methods necessary to achieve correct behavior.
ClassMethod new() → $engine Constructs an engine object.
ObjectMethod run() Start point to Runtime Engines.
ObjectMethod prepare() → $req ObjectMethod prepareConnection( $req ) $req - Foswiki::Request object to populate
$req object.
ObjectMethod prepareQueryParameters( $req, $queryString ) Populates $req with parameters extracted by parsing a byte string (which may include url-encoded characters, which may in turn be parts of utf8-encoded characters).
Note that parameter names and values are decoded to unicode.
ObjectMethod prepareHeaders( $req ) $req - Foswiki::Request object to populate
Should fill $req's headers and remoteUser fields.
ObjectMethod preparePath( $req ) $req - Foswiki::Request object to populate
Should fill $req's uri and pathInfo fields.
ObjectMethod prepareCookies( $req ) $req - Foswiki::Request object to populate
Should fill $req's cookie field. This method take cookie data from previously populated headers field and initializes from it. Maybe doesn't need to overload in children classes.
ObjectMethod prepareBody( $req ) $req - Foswiki::Request object to populate
Should perform any initialization tasks related to body processing.
ObjectMethod prepareBodyParameters( $req ) $req - Foswiki::Request object to populate
Should fill $req's body parameters (parameters that are set in the request body, as against the query string). Implementations must convert parameter values to unicode.
ObjectMethod prepareUploads( $req ) $req - Foswiki::Request object to populate
Implementations must convert upload names to unicode.
ObjectMethod finalize($res, $req) $res is the Foswiki::Response object
$req it the Foswiki::Request object.
ObjectMethod finalizeUploads( $res, $req ) $res - Foswiki::Response object to get data from
$req - Foswiki::Request object to get data from
Should delete any temp files created in preparation phase.
ObjectMethod finalizeError( $res, $req ) Called if some engine especific error happens.
$res - Foswiki::Response object to get data from
$req - Foswiki::Request object to get data from
ObjectMethod finalizeHeaders( $res, $req ) $res - Foswiki::Response object to get data from
$req - Foswiki::Request object to get data from
Should call finalizeCookies and then send $res' headers to client.
ObjectMethod finalizeCookies( $res ) $res - Foswiki::Response object to both get data from and populate
Should populate $res' headers field with cookies, if any.
ObjectMethod finalizeBody( $res, $req ) $res - Foswiki::Response object to get data from
$req - Foswiki::Request object to get data from
write()
as needed, so engines should redefine that method insted of this one.
Forces the response headers to be emitted if they haven't already been sent (note that this may in some circumstances result in cookies being missed) before flushing what is in the body so far.
Before headers are sent, any Content-length is removed, as a call to flush is a statement that there's more to follow, but we don't know how much at this point.
This function should be used with great care! It requires that the output headers are fully complete before it is first called. Once it has been called, the response object will refuse any modifications that would alter the header.ObjectMethod prepareWrite( $res ) $res - Foswiki::Response object to get data from
ObjectMethod write( $buffer ) $buffer - chunk of data to be sent
Should send $buffer to client.