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

World: r3wp

[!REBOL3-OLD1]

BrianH
11-Jan-2010
[20752]
CASE is used for that stuff a lot in the mezz code.
Graham
12-Jan-2010
[20753x4]
there's this example on http://www.rebol.net/wiki/Port_Examples

 copy-file: func [
       "Copy a large file"
       from-file to-file
       /local file1 file2 data
   ] [
       file1: open from-file
       file2: open/new to-file
       while [not empty? data: read/part file1 32000] [
           write file2 data
       ]
       close file1
       close file2
   ]
where is the skip occuring to advance thru the from-file?
Does the skip occur automatically on a file port?
If so, this seems to be the only documentation!
BrianH
12-Jan-2010
[20757x2]
All ports in R3 are like /direct ports in R2, autoadvancing with 
an internal position.
There are no series-like ports in R3.
Graham
12-Jan-2010
[20759x2]
Good to know
If I write a 100Mb file to a tcp port ... does R3 automatically write 
it in chunks for me?
BrianH
12-Jan-2010
[20761x2]
It is documented, as I recall, as part of the basic port model.
I would expect so, but you'd block your task! until it was done if 
you do it in one WRITE. And that means blocking quite a bit until 
tasks are properly working.
Henrik
12-Jan-2010
[20763]
BrianH, silly question, but where does the async nature of R3 ports 
then go, if writing blocks?
BrianH
12-Jan-2010
[20764x2]
You can use async by providing a handler, or use one of the sync 
wrapper functions. If you use the sync wrappers it is still internally 
async, but not as far as you know.
And other tasks can still do their stuff, once we have those.
Graham
12-Jan-2010
[20766]
that being the case, I can just write 32,000 bytes each time there 
is a wrote event
BrianH
12-Jan-2010
[20767]
Check first, and remember to manage your buffers well.
Graham
12-Jan-2010
[20768]
Seems to have worked .. managed to upload 32Mb using ftp
Gabriele
12-Jan-2010
[20769]
Brian: pipe was not posted publicly, though, nothing that i know 
of is using it (i did it for Maarten but he didn't use it :), so 
at this point is a lone function in a lone file... given that it 
will need adaptation to work in R3, feel free to make a R3 version 
out of it. it would be hard to claim copyright on that even if I 
wanted to. ;)
Graham
12-Jan-2010
[20770x2]
I've added a REBOL forum to my new vbulletin forum .. since reboltalk 
seems to be done 
http://synapse-ehr.com/forums/forumdisplay.php?3-Rebol
done => down.
Maxim
13-Jan-2010
[20772]
the disarmed state of error objects in R3 is REALLY cool... simplifies 
code and switches them to usefull data, which is an alien concept 
to most other languages.

success?: all [
	done: try [parse data rules]
	not error? done
	not string? done
]


here strings are the return type for parse block created (syntax?) 
errors in the source data
BrianH
13-Jan-2010
[20773x2]
Use :done so the error doesn't trip.
Not always needed, but good for bulletproof code :)
Maxim
13-Jan-2010
[20775]
in R3 it doesn't trip anymore which is what my post is about, the 
only place where :get-words have been usefull for me are for passing 
functions as values or to handle unset values.
Henrik
13-Jan-2010
[20776]
by tripping, I assume it means, if the parse somehow returns a function, 
that when run would cause an error, hence the get-word!.
BrianH
13-Jan-2010
[20777]
Yeah, I picked up on that later Maxim :)
Henrik
13-Jan-2010
[20778]
also serves as a security measure
Carl
13-Jan-2010
[20779]
How are things going on adding a few schemes?  


I mentioned that I would review the docs and add more examples; however, 
if someone has implemented a simple scheme example, like finger or 
such, then let's use that as the starting point, clean it up (if 
necessary), and put it on the wiki for others to learn from.
Graham
13-Jan-2010
[20780x3]
As mentioned in chat, most of the common schemes are now "done"
Most need sync wrappers around them, and some actors to provide the 
previous way of doing things
http://rebol.wik.is/Rebol3/Schemes
Carl
13-Jan-2010
[20783x2]
Ok, that's great.  So, by "sync wrappers" you mean some kind of internal 
utility to deal with the sync/async differences when called from 
the user level?
As related to:

http://www.rebol.net/wiki/Ports:_Synchronous_and_Asynchronous_Operations
Pekr
13-Jan-2010
[20785x2]
there is one very usefull doc describing device communication (don't 
remember the name now), but stil some things are going to be missing 
...
current implementation is not what I thought is going to happen - 
the rehaul of aproach we are taking for schemes. Some ppl are also 
confused by read/write function names vs read, write event names, 
and IIRC Graham also noticed few other issues ...
Graham
13-Jan-2010
[20787]
eg. write ftp://ftp.rebol.com/uploads%matrix.mov
Pekr
13-Jan-2010
[20788]
UDP implementation? (Needed for dns:// scheme to work?)
Graham
13-Jan-2010
[20789]
Still need a place for set-net, network timeouts, email object .... 
commonly used parse rules and bitsets, network error handlers
Carl
13-Jan-2010
[20790x2]
Pekr, there is no "overhaul" of the approach.  I spent several months 
on the new design, and it's much better than R2.  There may be a 
few small tweaks to make and a few issues to consider, but other 
than that, it's quite good.
The first thing people need to know is that THIS IS NOT R2!  The 
first mistake is to approach ports the same as R2. That will not 
work here.
Pekr
13-Jan-2010
[20792]
not overhaul of ports, but schemes. Ppl were thinking about FSM etc.
Carl
13-Jan-2010
[20793x4]
Graham is corrrect.  We need to finalize a base context for networking.
I would propose a Networking Module that can hold misc functions 
and variables, debugging modes, etc.
In R3, you can create a module inline with one line of code.  That's 
where to start.
Once we understand the exports, we can then formally define the module, 
title, export list, etc.
BrianH
13-Jan-2010
[20797]
The model is good, but most of the wrapper and helper code needs 
work, or revamping.
Carl
13-Jan-2010
[20798]
Also, for testing purposes... if you need to add a system/standard 
object, just unprotect and append to the object. I think the kernel 
will accept that. (But, do not reMAKE the standard object!)
Pekr
13-Jan-2010
[20799]
btw - were exports "finalized? Remember you posted blog about it. 
Ditto read/write topic (Prunning down the read/write blog ... and 
following talking about read/string)
Carl
13-Jan-2010
[20800x2]
Man this system is slow.... help!  Let's move this puppy!... I mean 
world.
I really think we need an EXPORT word that make exports easier to 
manage. Simple I think.