Loading ...
Sorry, an error occurred while loading the content.

AW: APR::BucketType bucket types?

Expand Messages
  • Dintelmann, Peter
    ... ok; I didn t think about that... So what is the most efficient way to determine the standard bucket types like EOS/EOC/FLUSH? How is is_eos() doing it?
    Message 1 of 2 , Apr 5, 2005
    • 0 Attachment
      > -----Urspr√ľngliche Nachricht-----
      > Von: Stas Bekman [mailto:stas@...]
      > Gesendet: Montag, 4. April 2005 18:47
      > An: Dintelmann, Peter
      > Cc: 'modperl@...'
      > Betreff: Re: APR::BucketType bucket types?
      >
      >
      > Dintelmann, Peter wrote:
      > > I am looking for a list of the bucket types for APR::BucketType
      > > objects and their meanings. So far I have encountered the types
      > > "FLUSH", "EOC" (end of connection?) and "mod_perl SV bucket".
      > >
      > > It seems that bucket type (names) are only available as strings.
      > > When looking for buckets of a particular type a comparison
      > > to an integer constant would be more efficient. Can we have
      > > some constants in APR::Const for this purpose and the bucket
      > > type name as a dual valued scalar?
      >
      > Peter, libapr identifies buckets only by their name. How do
      > you suggest
      > that we manage their numerical values? A new bucket type can
      > be added any
      > moment and we won't have an ID for it. APR::Const only
      > provides a glue for
      > the existing libapr's C-level constants. If you want a change of this
      > kind, you will have to ensure that libapr provides that ID
      > first and mp2
      > will follow.

      ok; I didn't think about that...
      So what is the most efficient way to determine the
      "standard" bucket types like EOS/EOC/FLUSH? How is
      is_eos() doing it?
    • Stas Bekman
      ... with is_foo methods: http://perl.apache.org/docs/2.0/api/APR/Bucket.html though at the moment we expose just two of them. Which ones do you lack? ...
      Message 2 of 2 , Apr 5, 2005
      • 0 Attachment
        Dintelmann, Peter wrote:
        >>-----Urspr√ľngliche Nachricht-----
        >>Von: Stas Bekman [mailto:stas@...]
        >>Gesendet: Montag, 4. April 2005 18:47
        >>An: Dintelmann, Peter
        >>Cc: 'modperl@...'
        >>Betreff: Re: APR::BucketType bucket types?
        >>
        >>
        >>Dintelmann, Peter wrote:
        >>
        >>>I am looking for a list of the bucket types for APR::BucketType
        >>>objects and their meanings. So far I have encountered the types
        >>>"FLUSH", "EOC" (end of connection?) and "mod_perl SV bucket".
        >>>
        >>>It seems that bucket type (names) are only available as strings.
        >>>When looking for buckets of a particular type a comparison
        >>>to an integer constant would be more efficient. Can we have
        >>>some constants in APR::Const for this purpose and the bucket
        >>>type name as a dual valued scalar?
        >>
        >>Peter, libapr identifies buckets only by their name. How do
        >>you suggest
        >>that we manage their numerical values? A new bucket type can
        >>be added any
        >>moment and we won't have an ID for it. APR::Const only
        >>provides a glue for
        >>the existing libapr's C-level constants. If you want a change of this
        >>kind, you will have to ensure that libapr provides that ID
        >>first and mp2
        >>will follow.
        >
        >
        > ok; I didn't think about that...
        > So what is the most efficient way to determine the
        > "standard" bucket types like EOS/EOC/FLUSH?

        with is_foo methods:
        http://perl.apache.org/docs/2.0/api/APR/Bucket.html
        though at the moment we expose just two of them. Which ones do you lack?

        > How is is_eos() doing it?

        APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_eos = {
        "EOS", 5, APR_BUCKET_METADATA,
        apr_bucket_destroy_noop,
        eos_bucket_read,
        apr_bucket_setaside_noop,
        apr_bucket_split_notimpl,
        apr_bucket_simple_copy
        };

        #define APR_BUCKET_IS_EOS(e) ((e)->type == &apr_bucket_type_eos)

        As you can see apr_bucket_type_eos is a struct, not a numerical value. I
        guess since it checks the address, it's possible to present it as a constant.

        --
        __________________________________________________________________
        Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
        http://stason.org/ mod_perl Guide ---> http://perl.apache.org
        mailto:stas@... http://use.perl.org http://apacheweek.com
        http://modperlbook.org http://apache.org http://ticketmaster.com
      Your message has been successfully submitted and would be delivered to recipients shortly.