Juhani, FWIW I agree with most of what you described, based on my reading and 
use of the codebase.  Brock, I agree that these things are not yet adequately 
documented--especially in terms of Javadocs for the main interfaces: Source, 
Channel, and Sink.  Also, there is enough variation among the various 
implementations of these interfaces to lead to ambiguous interpretation.

One thing I wanted to comment on specifically is Juhani's statement about 
channel capacity:

> Channels:
> - Only memory channels have a capacity, but when that is exceeded 
> ChannelException seems a clearcut reaction

Before your recent refactoring of MemoryChannel, put() would block indefinitely 
if the queue was at capacity--are you suggesting that this was incorrect 
behavior that should not be allowed?  Or just that any such blocking should 
have a finite duration (similar to take() keep-alive), and throw 
ChannelException upon timeout?

Also, other channels may well have implicit capacities, for instance available 
space in a database or filesystem partition, though I agree that 
ChannelException would be appropriate in those cases.

-peter

Reply via email to