World: r3wp
[!REBOL3 Schemes] Implementors guide
older newer | first last |
Steeve 14-Jan-2010 [1404x2] | Andreas, normaly it's the behavior of COPY to iterate thru a port result |
i mean it is like that in R2 | |
Gregg 14-Jan-2010 [1406x2] | So 'msg is returned as a block? |
I was thinking of that too Steeve. COPY versus READ versus TAKE. | |
Steeve 14-Jan-2010 [1408] | Nice idea Gregg, READ could return the whole block (an COPY or TAKE just one line at time) |
Gregg 14-Jan-2010 [1409] | In this case, READ seems OK, and COPY would work as well, but not delete the mail on the server. |
Andreas 14-Jan-2010 [1410] | read returns a binary! |
Steeve 14-Jan-2010 [1411] | bu you could return a block if you wish ;-) |
Gregg 14-Jan-2010 [1412] | Ah, so this is a native READ, not a wrapper in your scheme. Got it. |
Andreas 14-Jan-2010 [1413x2] | i could return all messages in a block, yes |
i think i got the idea of READ iterating from some R3 example | |
Steeve 14-Jan-2010 [1415] | Andreas, where is your source, is that free ? |
Gregg 14-Jan-2010 [1416] | Then we need a callback mechanism for progress, if we read all in one shot. |
Andreas 14-Jan-2010 [1417x3] | http://bolka.at/share/prot-pop3.r |
[temporary url] | |
not yet licensed | |
Steeve 14-Jan-2010 [1420] | not need of a callback, you can return a block and populate the same block further. You see what i mean ? |
Andreas 14-Jan-2010 [1421] | interesting idea |
Gregg 14-Jan-2010 [1422] | I'd like to see it stay low level in the scheme, as Andreas has it, and add wrappers for higher level operations. |
Steeve 14-Jan-2010 [1423] | yep, i think so |
Andreas 14-Jan-2010 [1424x3] | we can add a series protocol later on |
the source avail at http://bolka.at/share/prot-pop3.rcurrently still has a series interface | |
length? for getting the num of messages avail, pick for reading a specific message | |
Gregg 14-Jan-2010 [1427] | I think I understand Steeve, but then how does your calling code know the block has been extended, without polling? |
Steeve 14-Jan-2010 [1428x2] | and read for the whole block (which can be updated) |
Greeg, i think we could add some info in the block, like a timestamp at the head | |
Andreas 14-Jan-2010 [1430] | hm, that'll get messy soon |
Steeve 14-Jan-2010 [1431] | perhaps it's better to return an structured object |
Gregg 14-Jan-2010 [1432] | The ability to get just headers, number of messages, etc. is great. Get a little info, show the user, request more data as desired, and show progress for lengthy ops. |
Andreas 14-Jan-2010 [1433x2] | progress for length ops still is an open problem |
i could enable copy/part for downloading large messages | |
Gregg 14-Jan-2010 [1435x2] | Still, without a callback or notification of some kind, the caller has to poll against the block to check for changes. |
Having the basics first is great Andreas. | |
Andreas 14-Jan-2010 [1437x3] | ah, i know where i got the idea from. the large file copy example on the "docbase" wiki |
http://www.rebol.net/wiki/Port_Examples#Copy_a_large_file | |
ha! read/part :) | |
Steeve 14-Jan-2010 [1440] | Andreas, your binding in the awake function should ne done only one time, at construction |
Andreas 14-Jan-2010 [1441] | sure. but forget that code, i'll put up something more up-to-date soon |
Gregg 14-Jan-2010 [1442x2] | Yes, I think that should work. Then your state machine will need to know it's building a message, or loop internally. |
All the recent scheme work makes me want to jump in and see if we can make a nice scheme dialect. :-) | |
Steeve 14-Jan-2010 [1444] | Agree |
Andreas 14-Jan-2010 [1445x2] | i intend to iterate POP3 until i consider it to be a good example for a basic scheme implementation for an "interactive" (lock-step request/response) protocol |
i think we can then extract a dialect or at least some helper functions from there | |
Steeve 14-Jan-2010 [1447] | pop3 is good starter, not too complicated |
Gregg 14-Jan-2010 [1448] | Agreed. The simple protocols help us identify the foundation elements. |
Steeve 14-Jan-2010 [1449] | we could give a try for real time collaborative work and update the code in a shared sheet. There some tools for that |
Andreas 14-Jan-2010 [1450x3] | too little code :) |
prot-pop3.r is 113 lines atm | |
but it's in a git repository anyway, i could share that, if someone wants to collab | |
Gregg 14-Jan-2010 [1453] | I'll leave it to you guys for now. I need to make time before I'll add much value. I agree with Andreas as well. Better to have him complete his vision on this I think. |
older newer | first last |