Hello [EMAIL PROTECTED]!

On 24-Ago-00, you wrote:

 a> I've read the User's Guide, the old FAQs, the how-to and the
 a> recent Networking chapter, but I still lack insight on the
 a> inner workings of read-io. I can make conjectures, they may
 a> even work, but I don't like that: in the long run, I could
 a> accumulate all sorts of mistakes.

I hope I can help...

 a> ---------- Buffer ----------

 a> We need a buffer. If we need to read 2000 bytes, the buffer is
 a> made 2002 bytes long with

 a>    data1: make string! 2002

(This is probably a bug. I think it was going to be fixed...)

 a> I guess the extra 2 bytes are needed to store ancillary
 a> information, but their content is not my concern, for now. Can
 a> we make the buffer as in

 a>    data2: make string! 2000

You should be able to, but it creates problems if the length is a
multiple of 16. I had a lot of troubles because of this... :-)

 a> or even

 a>    data3: copy ""

READ-IO is very low-level, and does not extend the string. Anyway,
since the new experimental release of core has asyncronous TCP
ports, READ-IO should no more be needed.

 a> ---------- Correct buffer-length ----------

 a> According to CGI quasi-official specs, once I've checked the
 a> message body is in URL-encoded format, I must read no more
 a> than CONTENT_LENGTH bytes from system/ports/input. So if I
 a> want to go elegant and read *exactly* CONTENT_LENGTH bytes I
 a> make my buffer exactly 2 bytes longer than that and use
 a> read-io to read exactly CONTENT_LENGTH bytes, so I don't waste
 a> memory in a prudent 128 MB buffer, right?

Yup.

 a> ---------- Data readiness ----------

[...]
 a> CONTENT_LENGTH is, say, 22000 bytes, what happens if I request
 a> my 22000 bytes but only 1000 are available? Will read-io
 a> return the 1000 bytes immediately (which means I have to do

Yes.

Regards,
    Gabriele.
-- 
Gabriele Santilli <[EMAIL PROTECTED]> - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/

Reply via email to