On 19 Jun 2001, Jeff Trawick wrote:
> > +#define APR_BUCKET_FLAGNONE 0x00000000
> > +#define APR_BUCKET_FLAGSETASIDE 0x00000001
> > +#define APR_BUCKET_FLAGSPLIT 0x00000002
> > +#define APR_BUCKET_FLAGCOPY 0x00000004
> > +#define APR_BUCKET_FLAGSENDFILE 0x00000010
> > +#define APR_BUCKET_FLAGMETADATA 0x00000100
> > +#define APR_BUCKET_FLAGALLFNS
> > \
> > + (APR_BUCKET_FLAGSETASIDE | APR_BUCKET_FLAGSPLIT |
> > APR_BUCKET_FLAGCOPY)
>
> how about a '_' after FLAG? as long as they are already we might as
> well make them a little more readable :)
Yeah... sadly, I was just trying to make them fit on one line in places
where they're used. ;-) I'll add the extra _.
> re APR_BUCKET_FLAGSENDFILE: all that matters is that the bucket
> represents an apr_file_t... whether or not somebody is going to use
> apr_sendfile() or something else shouldn't be important to the bucket
> code, should it? perhaps it should be renamed to APR_BUCKET_FLAGFILE
Hmm... well, not necessarily. Just because it has a file descriptor in it
doesn't mean that it behaves like a file bucket in any OTHER way. All the
flag means is that there exists a file descriptor in the bucket data
structure at a particular offset that you can use sendfile on. Whether it
would be MMAPed upon read or whatever... well, that's a different flag, I
think. No?
> a couple of really tiny nits about APR_BUCKET_FLAGALLFNS...
>
> . ALLFNS doesn't mean all functions, it just means all of the cool
> things
No, it means all functions. destroy() and read() are required, so if you
have the other three, you have all five of them.
> . ALLFNS will surely change in the future, but what is the way to get
> the bucket types updated appropriately? I suspect that if we do
> away with ALLFNS and instead "spell it out" in the bucket type
> definitions it will be most obvious what to update
Yeah, I guess... the lines just become prohibitively long. But you're
right that it could cause problems if we added to it later. <sigh> Well,
I'll see what I can do... I don't suppose anyone would agree to a
"APR_BUCKET_FLAGTHREEOPTFNS" or something like that?
> would it be bad to have an accessor function for the file descriptor?
> otherwise, the doc for APR_BUCKET_FLAGSENDFILE should mention that if
> the bucket has this flag then the apr_file_t * has to be at the magic
> offset
It does mention that (well, actually, the APR_BUCKET_SUPPORTS_SENDFILE()
documentation mentions it... I guess a @see is appropriate at least). An
accessor function is not needed; all you have to do is just pretend that
it's a FILE bucket. It goes something like this:
if (APR_BUCKET_SUPPORTS_SENDFILE(e)) {
apr_bucket_file *f = e->data;
apr_sendfile(sock, f->fd, ...);
}
Easy, huh?
--Cliff
--------------------------------------------------------------
Cliff Woolley
[EMAIL PROTECTED]
Charlottesville, VA