What you describe is equivalent to thread.delay (with less precision). But it makes me realize that we don't even need duppy for our problem ?!
We receive some data, from a source client or an icecast server, and want to put it in the buffer. If the buffer is full, Thread.delay, then if it's still full, drop some data (nobody is eating in that buffer anyway) otherwise put your data in it (or wait more to have enough room, the idea being that you should never sleep twice if the buffer hasn't changed in the meantime). This avoids abusive dropping and abusive latency. Is it that simple or did I miss something ? -- David
