Joe Orton wrote:
On Mon, Jul 21, 2008 at 01:12:13PM +0200, Mladen Turk wrote:
Joe Orton wrote:
In the model where you have S allocated out of P, let's presume we also
have a subpool Q.
If for some reason specific to the design of your application, you need
S to be closed before the destruction of Q, you can register a cleanup
against Q which does calls apr_socket_close(S). That will give defined
behaviour.
That's fine, but then if I explicitly close the S I have to deregister
the cleanup for Q, close the S, and then register the cleanup for Q
again. That's how its done now in multiple places where APR is used.
So you're saying it is possible to achieve the desired behaviour with
APR today, but it's a bit of effort? Why can't you encapsulate that
effort in a couple of (AFAICT trivial two-line) wrapper functions?
Cannot do that. The user of the API needs to do that in it's code
and take an extra care about pool ordering, so instead of well defined
API, without pre_cleanup its pretty much 'howto'.
You have to make a case why it is necessary to change the default
behaviour of APR objects.
I'm not saying to change default behavior, but to have an option
to change the behavior at runtime as applicable by the API user.
The pool logic is pretty much the core of the APR so it should
be more flexible thought.
Regards
--
^(TM)