Justin Erenkrantz wrote:
--On Thursday, November 13, 2003 12:38 AM -0800 Stas Bekman <[EMAIL PROTECTED]> wrote:

Great. Where this should be documented? In the ap_get_brigade .h?


It's already in util_filters.h. Read the documentation for ap_input_mode_t:

   /** The filter should return at most readbytes data. */
   AP_MODE_READBYTES,
   ...

Aha! I was looking in the wrong place then. Thanks Justin.


Should we add an explicit explanation to AP_MODE_READBYTES: return at most readbytes data. Can't return 0 with APR_BLOCK_READ. Can't return more than readbytes data.

Also while we are at it I have a few more questions:

    /** The filter should return at most one line of CRLF data.
     *  (If a potential line is too long or no CRLF is found, the
     *   filter may return partial data).
     */
    AP_MODE_GETLINE,

does it mean that the filter should ignore the readbytes argument in this mode?

    /** The filter should implicitly eat any CRLF pairs that it sees. */
    AP_MODE_EATCRLF,

does it mean that it should do the same as AP_MODE_GETLINE but kill CRLF? If not how much data is it supposed to read? Or is it a mode that never goes on its own and should be OR'ed with some definitive mode, e.g.:
AP_MODE_GETLINE|AP_MODE_EATCRLF and AP_MODE_READBYTES|AP_MODE_EATCRLF?


right? Or how otherwise would you explain the assertion:

AP_DEBUG_ASSERT(!APR_BRIGADE_EMPTY(bb));


If using APR_BLOCK_READ, it's illegal to return 0 bytes with AP_MODE_READBYTES - that is what this assert is checking for in maintainer mode (this was a troublesome assert at one point). It's the same expectation as doing a blocking socking read() - blocking reads shouldn't return until something is returned. -- justin

Cool:


/** Determines how a bucket or brigade should be read */
typedef enum {
    APR_BLOCK_READ,   /**< block until data becomes available */
    APR_NONBLOCK_READ /**< return immediately if no data is available */
} apr_read_type_e;

Though it'd be nice to add a note re: APR_BLOCK_READ in the AP_MODE_READBYTES doc above. Or I guess may be it belongs to some filters tutorial...

__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com



Reply via email to