<br><div class="gmail_quote">On Wed, Feb 17, 2010 at 8:18 PM, Synx <span dir="ltr">&lt;<a href="mailto:plt@synx.us.to">plt@synx.us.to</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
I tried making custom ports, but that was a mess too. I don&#39;t want or<br>
care about special values, lines, source code locations or peeking. All<br>
I want is something that consumes bytes, through a complex chain of<br>
encodings. But the chain itself has to have some way for me to<br>
&quot;supercede&quot; elements in it, when I no longer have to decode a prefix for<br>
instance, and all that particular saver is doing now, is just passing<br>
the bytes onto the next step forever.<br></blockquote><div><br>I am not certain if I grasp your saver and supercede concept fully, but my bzlib/port does handle the filter concept that allows you to chain a bunch of filters together on top of an input-port (and output-port too), and returns an input-port, so you can consume the data with the filters applied dynamically.<br>
<br>For example - adding base64-encode &amp; gzip filters on top of a regular text port, and reading from it you will get data that is first gzipped and then base64&#39;d. <br><br>The implementation does make use of thread and pipes, as well as custom ports, to take advantage of the built-in filter functions that all take an input-port &amp; an output-port.  I previously was able to run over 20K threads simultaneously on my box, so I am surprised you are having issues with just 200 threads, but I did not do additional scalability testings to see what the limit will be.  If such scalability issue does exist, the implementation can be changed.<br>
<br>HTH.  Cheers,<br>yc<br><br><br></div></div>