r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!REBOL3 Schemes] Implementors guide

Andreas
11-Jan-2010
[1010x4]
when you do:
mbox: open pop3://user:[pass-:-server]
the blue liveness bars in the "port actor" might be slightly misleading
maybe i should use three separate actors instead (open, read, write)
i'll try that
Graham
11-Jan-2010
[1014x2]
heh ... should give us the link to the source of your diagram as 
well :)
Currently streaming a ftp download of the ubuntu server iso image 
... will see how that longs before I get an error.
Andreas
11-Jan-2010
[1016x3]
http://www.websequencediagrams.com/cgi-bin/cdraw?lz=cGFydGljaXBhbnQgU2NyaXB0CgAHDFBvcgADDiJPcGVuIEFjdG9yIgALDlJlYWQABBVXcml0ZQArCAoAXwYtPgBnBjogTUFLRQBhBmFjdGl2YXRlAIEACG5vdGUgb3ZlcgCBEgcsUG9ydDogb3BlbiBQT1AzIHBvcnQARwkAFwZPUEVOClBvcnQtLT4AgSAKABEHAFgJAIE4DQCBRwotPlN1YnAAPgoAdwsiUG9ydCIsAIFxDSAgICBsb29rdXAABgVjb25uZWN0ABIFcmVhZCB3ZWxjb21lCmVuZCBub3RlAF0NAIFGBlJFQUQAgScIAII2CgARBwCBJQoAgk8MAIJdCgCBJAtXQUlUCgoAgTcHLQCBPwkgQXdha2U6IExPT0tVUCBFdmVuAIJcCyIAGQ0iADcIAC8GAIF8EGRlAB8ZAGwMZXJ2ZXIAhDEFOgCCCAkAg0MFcmlnaHQgb2YgIgAZCyI6IC4uLgoAKwsAgTIKADYKAIE-GUNPTk5FQ1QAgSA4AIJ4BQCBPBxsb29wIHJlc3BvbnNlIGltY29tcGxldGU_AIN2BQCCVRlSRUFEAIJlByAgICAAglcZADoLAIEGFiAgICAAgl0bZW5kAINZGwB7CwCDSycAgg4NVFVSTiB0cnVlAINeHACEZwoAhTEMZXhpdACFDAYAhSELAIcBDgBaBgCESA0AiDMMAIZbHjogYnVmZmVyIFVTRVIAhkITV1JJVEUAh30IAIhyCwASCACHfQoAiQwOAIkdCwCGTwwASQUABhYAg2UFKCoxKQAvDQCBSiEAigMOAIhDInNlbmQAgWcGAIhTCQCFDggAh3VoAIFgBgCISBpXUk9URQCDEIN5UEFTUwCFICgAJwUAhSImAJAbCgCIHRMAkHwMAJBEEC4uLgo&s=modern-blue
much improved version, schowing the actual activation lifetime
best consumed on a huge screen side-by-side with the code :)
Graham
11-Jan-2010
[1019]
I wonder if it might be better to call the subport the pop port instead 
?
Andreas
11-Jan-2010
[1020x2]
it's the tcp port
port
 is the pop port
Graham
11-Jan-2010
[1022]
I know .. but that's where all the action is occurring.
Andreas
11-Jan-2010
[1023x2]
if anything, i'd rather call the "port" pop3 port and the "subport" 
tcp port
where the action occurs pertains to how the code is structured
Graham
11-Jan-2010
[1025]
ok, tcp port is good too .. I've always found the use of subport 
in r2 confusing ..
Andreas
11-Jan-2010
[1026x12]
true
i should've broken with that habit :)
so, to stop with this pollution of huge urls: http://bit.ly/7cflf4
and the flow up to "buffer USER" will be pretty much the same for 
each protocol that sends and initial welcome message
where the server sends an initial welcome message, that is
if the client is expected to send a request before receiving anything 
from the server, things will look different
the other design issue is wether the protocol should be sync or async 
for the user (i.e. the "script")
sync behaviour is depicted in this picture. basically each READ will 
WAIT on the tcp port until the response has fully arrived
if one would like to expose an async scheme, instead of the first 
WAIT, control will return to the script
ah, not really!
you'd return TRUE from the CONNECT event handler, and returns through 
all back to the script
i think the lookup should most of the time wrapped silently, and 
not asyncly exposed to a scheme's user, even if the scheme is supposed 
to be async
Graham
11-Jan-2010
[1038]
your pop scheme is sync ..
Andreas
11-Jan-2010
[1039x4]
yep
but i'd love to be provide an async mode as well
problem is: we can't truly do that yet
but that would be _my_ answer to your recent read/as concerns
Graham
11-Jan-2010
[1043]
I'm forcing sync by waiting until all the data has arrived
Andreas
11-Jan-2010
[1044x2]
so do i
foo: open ftp://.....

foo/awake: func [event] [ ... handle events like 'file-start, 'file-chunk, 
'file-end ..]
write foo [RETR %avatar.avi]
Graham
11-Jan-2010
[1046]
so what do we need ?  a thread that controls the awake handler?
Andreas
11-Jan-2010
[1047]
you see where i'm going with the above pseudocode?
Graham
11-Jan-2010
[1048]
and write returns immediately?
Andreas
11-Jan-2010
[1049]
precisely
Graham
11-Jan-2010
[1050]
So, does mine .. . but I have to kick it off with a wait
Andreas
11-Jan-2010
[1051x2]
wait foo
that's what i'd want
Graham
11-Jan-2010
[1053]
and now you're stuck ... waiting ...
Andreas
11-Jan-2010
[1054x2]
currently we have to do wait foo/..../subport, as far as i can tell
then, as far as i currently understand it, read foo should work
Graham
11-Jan-2010
[1056]
that's what my read does, it does a wait on the tcp port
Andreas
11-Jan-2010
[1057x3]
you'll have to "block" somewhere
the transfer won't happen in zero time
to indicate when it's fine to block: WAIT