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

World: r3wp

[!REBOL3 Schemes] Implementors guide

Andreas
10-Jan-2010
[945]
second appended another 13901 bytes
Graham
10-Jan-2010
[946x2]
Does the server always close the dataport after sending data?
if so I can keep trying to read until the port is closed
Andreas
10-Jan-2010
[948x2]
yes, that's how PASV works, as far as i know
client sends PASV, gets a port number, connects to that port
Graham
10-Jan-2010
[950]
client/spec/dataport/awake: func [event /local port] [
											port: event/port
											print ["==TCP-event on dataport:" event/type]
											switch/default event/type [
												read [print ["^\read:" length? port/data] 
													print to-string port/data
													clear port/data
													read port
												]
												wrote [read port]
												lookup [print query port open port]
												connect [read port]
												close [ ]
											][true]
										]
Andreas
10-Jan-2010
[951]
yep
Graham
10-Jan-2010
[952]
so this is my data port handler ..
Andreas
10-Jan-2010
[953x2]
if you really want to collect the response, drop the CLEAR
and then store port/data away in the close event
Graham
10-Jan-2010
[955]
let me try that
Andreas
10-Jan-2010
[956x2]
you'll have to do a PASV before each new request
to avoid that, there was APSV ("all passive"), dunno how support 
for that is
Graham
10-Jan-2010
[958]
Still needs two reads
Andreas
10-Jan-2010
[959]
yeah, that's ok, no?
Graham
10-Jan-2010
[960x2]
switch/default event/type [
												read [print ["^\read:" length? port/data] 
													read port
												]
												wrote [read port]
												lookup [print query port open port]
												connect [read port]
												close [ print to-string port/data]
											][true]
so keep reading until the port is closed ...
Andreas
10-Jan-2010
[962x2]
exactly
well, gotta run now. good luck!
Graham
10-Jan-2010
[964x2]
ok,
they must be sending me two lots of data
Andreas
10-Jan-2010
[966x4]
40k+ for the LIST in pool/x
a good test :)
and it's good to know that data is appended
saves me the separate buffer in my pop3 prot
Graham
10-Jan-2010
[970]
and the buffer keeps expanding too
Graham
11-Jan-2010
[971]
Using a timeout value, largish, I can read a 5000 file listing in 
a ftp directory.  Posted latest code.
Henrik
11-Jan-2010
[972]
It sounds to me that the timeout is counting down while you are receiving 
data. That's not logical?
Graham
11-Jan-2010
[973x5]
Henrik ..I have little idea of what I'm doing .. just stumbling around 
here.
Downloaded a 16Mb file using my ftp scheme ... streamed it to disk 
directly rather than saving in any buffer.
Changed the format of the data block a little ...

write cmd [ RETR "REMR.zip" %remr.zip]
read cmd
I'm not using a dialect but if the last member of the block is a 
file, it streams the data to the file, if it's a binary eg. a buffer, 
it appends to the buffer, and if it's a  function, then uses a the 
function as a callback on the data ...
does that sound sensible?
Steeve
11-Jan-2010
[978]
not bad :-)
Graham
11-Jan-2010
[979]
using a function means you can pass your own directory parser to 
the incoming data to format it as you like.
Robert
11-Jan-2010
[980]
Graham, regarding all the overlapped words. I am/was confused too. 
I created a sequence diagram and posted it via my homepage/blog. 
Maybe it helps, and if, please provide information about errors in 
it.
Graham
11-Jan-2010
[981]
and the link is ?
Pekr
11-Jan-2010
[982]
http://www.robertmuench.de/blog/files/r3_ports.php
Henrik
11-Jan-2010
[983]
Let Carl see that diagram or put it in the wiki.
Graham
11-Jan-2010
[984x3]
Why choose the napkin style? heh
Robert, where's the source to the http://www.websequencediagrams.com/
 you used?
Brian, how can we over ride the existing schemes?
Robert
11-Jan-2010
[987x3]
I like the napkin style most.
I sent you the source via email as AltMe doesn't handle OSX line 
breaks.
BTW: I'm going to redo the diagram using yworks yEd editor. It's 
a fantastic graph layout editor and now supports swimlane diagrams.
Graham
11-Jan-2010
[990x5]
Thanks Robert .. I got it
http://rebol.wik.is/Rebol3/Schemes/Ftp

Updated so that you can supply a callback to commands

eg: 

[ LIST (:print) ]

or 

[RETR "hugefile" %downloads/hugefile.mov ]
or supply a file to stream a download.
there's a bug in that I don't return to console so I must be stuck 
in the awake handler somewhere.
and it's much slower than R2 so I must be abusing the waits ...