2013/3/21 Alexander Klauer <alexander.kla...@itwm.fraunhofer.de>:
> How about this:
>
> * Make ares_destroy() more user friendly and allow callbacks to register new
> requests on the channel being destroyed. Those requests would then
> immediately be finished with ARES_EDESTRUCTION.
> * Let ares_cancel() walk through the list, but don't assert it's empty
> afterwards.

+1 on both accounts, but I guess that doesn't fully solve your issue. As a user
of the library, I would think that semantic is sound. Possibly with the addition
that ares_cancel() should not (accidentally) cancel any new requests created
within it, if that could happen.

> Then, to get behaviour (1), one would call ares_cancel(), and for behaviour
> (2), you would use ares_destroy(), followed by ares_init(). A little awkward
> perhaps, but the API would not be broken.
>
> Thoughts?

I'm curious what your use case is, and I agree it's awkward to have to use
ares_destroy() if you don't really mean to destroy it.

*Thinking out loud* Could one perhaps add a channel flag that would alter
the behaviour of ares_cancel()? Basically a boolean disabling the whole
library. Does that make sense? I don't know of any other library doing that,
except for "shutdown," which is what we/you would like to avoid.

-- 
Tommie

Reply via email to