World: r3wp
[!REBOL3 Schemes] Implementors guide
older newer | first last |
Graham 11-Jan-2010 [1004x2] | Got this on a file download .. ==TCP-event on dataport: read ?read: 15008 ** Access error: cannot open: %wubi.exe reason: -3 ** Where: write switch switch applier wake-up loop applier wait while either eit her either read catch either either applier do ** Near: write/append port/spec/method port/data clear port/data |
Might be a permissions issue ... | |
Andreas 11-Jan-2010 [1006x8] | sooo .... |
prepared for the madness? | |
http://www.websequencediagrams.com/cgi-bin/cdraw?lz=U2NyaXB0LT4AAgY6IE1BS0UgUG9ydAphY3RpdmF0ZSAAHQYKbm90ZSBvdmVyAAoHLFBvcnQ6IG9wZW4gUE9QMyBwb3J0CgBICAAXBk9QRU4KZGUAOxBQb3J0LQAeBiBBY3RvcgAjBwBqCSIAEQoiACkFACEGLT5TdWJwAFAKAIEJCwAtBSIsACwNICAgIGxvb2t1cAAGBWNvbm5lY3QAEgVyZWFkIHdlbGNvbWUKZW5kIG5vdGUAXQ0AgVgGUkVBRACBNQwAgQgRAIE4DwArBQCBHCtXQUlUAEcZCgCBZwctAIFvCSBBd2FrZTogTE9PS1VQIEV2ZW4Agx4LIgAZDSIANwgALwYAgiwQAIFJDAApDwBsDGVydmVyAIQMBToAgjgJAIQFBXJpZ2h0IG9mICIAGQsiOiAuLi4KACsLAIEyCgA2CgCBPhlDT05ORUNUAIEgOACDHBEAgUgQbG9vcCByZXNwb25zZSBpbWNvbXBsZXRlPwCEJgUAglUZUkVBRACCZQcgICAgAIJXGQA6CwCBBhYgICAgAIJdG2VuZACDWRsAewsAg0snAIIODVRVUk4gdHJ1ZQCDXhwAhGcKAIcQDGV4aXQAhSQGAIURFwCGah06IGJ1ZmZlciBVU0VSAIZQE1dSSVRFAIY4LAArBgCGHBcAhlAWAF4FAIgzFQCDVwUoKjEpAIgpJHNlbmQAgUEGAIg7CQCERggAh0WBAACBPgYAiBgyV1JPVEUAg1eDGgCNfBcAhksmUEFTUwCFLigAJwUAhTAmAJAjCgCITwcoZnJvbQCPZwUgYWN0b3IAhG4aAI0gCwCQcwUiCg&s=modern-blue | |
should be a complete walkthrough of what happens | |
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 ... |
older newer | first last |