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

World: r3wp

[!REBOL3 Schemes] Implementors guide

Pekr
19-Jan-2010
[1689]
Carl - guys found out, that we have just one shared buffer - why? 
You have to read everything out during read phase, or you can get 
corrupted data ....
Graham
19-Jan-2010
[1690]
pekr, what protocols are full duplex?
Pekr
19-Jan-2010
[1691]
none ... but wasn't it you, after all, who just wondered, why the 
in-out buffer is shared?
Graham
19-Jan-2010
[1692x2]
No .. I just pointed it out.
And wondering if that imposes a lot of GC ...
Carl
19-Jan-2010
[1694x4]
It's one of those things that's in the "balance".
It turns out, I think you can allocate separate buffers, but you 
must know how to do it... and I've not tried it yet, so have not 
mentioned it either.
But, I did give full duplex consideration during implementation. 
 I think more modern IM systems benefit from it.
Also, it turns out that one must be careful when estimating GC overhead. 
Sometimes it is more efficient, becuase otherwise you must add extra 
code to manage memory usage... that is constantly being run. You 
know what I mean?
Graham
19-Jan-2010
[1698]
It wouldn't be a big change to the schemes if that gets implemented 
right ?
Carl
19-Jan-2010
[1699x2]
Right. No change to schemes.
lunch time, bbl
Graham
19-Jan-2010
[1701]
I think in my ftp scheme I access port/data directly so I can stream 
to the file system .. so it would require a tiny change if there 
were two sep buffers
Andreas
19-Jan-2010
[1702]
Graham, instead of
    write imap-port [ dialect stuff ]
    wait [ imap-port timeout ]
could you try:
    write imap-port [ dialect stuff ]
    read imap-port
    wait imap-port
I think that should work.
Carl
19-Jan-2010
[1703x2]
Graham, before looking at your new schemes, I decided to review some 
of DocBase. But... I must say that I have a difficult time finding 
things there... I'm not sure if the user who was reorganizing it 
got a chance to finish the updates.
On http://www.rebol.net/wiki/Table_Of_Contents-- I've added some 
links to ports and schemes. Did I miss any?
Graham
19-Jan-2010
[1705x3]
Hard to say ...
If I find anymore I'll update the wiki 
Andreas, going to try that now.
You did have an example somewhere of doing a large file transfer 
between client/server
Andreas
19-Jan-2010
[1708x3]
http://www.rebol.net/wiki/TCP_Port_Examples
http://www.rebol.net/wiki/Ports:_Synchronous_and_Asynchronous_Operations
may also make sense to be linked up
Ports:_Synchronous_and_Asynchronous_Operations -- that is
Carl
19-Jan-2010
[1711]
A: do you have a wiki account?
Andreas
19-Jan-2010
[1712x2]
Not yet
OK, created an account. I'll simple add those links myself, then
Carl
19-Jan-2010
[1714]
I tossed a few up just now. Go ahead and add or edit as needed.
Graham
19-Jan-2010
[1715]
looks like we side tracked into a docbase update ...
Andreas
19-Jan-2010
[1716]
Already debugging the IMAP thingie
Carl
19-Jan-2010
[1717]
Not a sidetrack. See my note. This is an opportunity to check the 
docs against the code.
Andreas
19-Jan-2010
[1718x2]
Ok, fixed the IMAP proto so that no timeout is needed anymore. Stumbled 
over what seems to be a bug in R3's USE, though:
>> foo: func [] [use [] [return 42] 0]
>> foo
== 0
Graham
19-Jan-2010
[1720]
Looks like this bug is what was causing me grief ...
Andreas
19-Jan-2010
[1721]
Reported as bug#1436
Graham
19-Jan-2010
[1722x2]
Updated to 0.0.4 
working http://rebol.wik.is/Rebol3/Schemes/Imap4
There's some optimizing of parsing the input and checking for incomplete 
data returned on a read to be done.
Graham
20-Jan-2010
[1724]
I've updated it to v 0.0.5 which hopefully checks now for incomplete 
read data, and factors out some of the parsing
Pekr
20-Jan-2010
[1725]
Back to separate buffers - just a note. I think that we eventually 
don't need them. But we should be carefull to user errors. Because 
with one shared buffer, if you write to it, before you read-out all 
incoming data, you just destroyed a data. And what if you don't need 
to act on the data yet? You will temporarily store it in some other 
storage (buffer) anyway. But I never wrote a scheme, so maybe this 
is just plain theory, and in fact having one buffer will not cause 
any problems to anyone ...
Graham
20-Jan-2010
[1726x2]
well, I think you normally read the data and then decide what to 
do with it.  So, you have saved it somewhere ...
Anyway I haven't had any issues so far .. and users unless they are 
writing schemes won't either.
Pekr
20-Jan-2010
[1728x2]
I mean - what if data comes, but you don't want/need to react on 
it, but you need to write? You have to read-out the buffer first, 
before you write, no? This constant small chunk read/wirte could 
cause unnecessary overhead, or not?
Anyway - good to know, there is still some secret mode to reveal 
:-) So maybe one day Carl describes how to utilise two separate buffers 
:-)
Graham
20-Jan-2010
[1730]
I think it would be good if people actually tested the schemes!
Pekr
20-Jan-2010
[1731]
OK, I will do few tests with my FTP Linux server, during the evening 
...
Graham
20-Jan-2010
[1732x4]
It would be good to get these all tested and written to a usable 
level while the code is still fresh, and while the spirit is willing 
...
Of course, Carl's code review may change all of that ...
With the latest code I got an error before the lookup event connecting 
to imap.aim.com and then it was ok.  Odd.
got an error event before the lookup event
Pekr
20-Jan-2010
[1736]
Carl is going to review the code? What's going to be the outcome? 
Full rewrite? Or just some methodology/aproach suggestions?
Rebolek
20-Jan-2010
[1737]
I think that depends on the review :)
Graham
20-Jan-2010
[1738]
Right, that was the plan ..to get Carl to review schemes and advise 
on a "best" practice.