[ANN] Roxy 0.1 - Remote Proxy Objects w/ type & method signature impersonation and w/ remote block y

J

Jeff Wood

Hey folks.

I know a number of people are/were interested in this.

I've just requested the rubyforge project for Roxy.

If you've watched the ruby-talk mailing list over the past few weeks,
I've been having a discussion with a number of people about
implementing clean proxy objects. Ones that don't hide the signatures
of the objects they are meant to impersonate.

Anyways, I've built what I believe is version 0.1 of the project. It
even works with blocks (see the snippets below). And, since the object
impersonates the remote, irb's auto-completion works for remote
objects.

So, as soon as the rubyforge folks validate the project, I will get
things posted for all to help make even better.

... until then, I'll simply wet your appetite with the following:

-- SCRIPT: server.rb --

require 'roxy'

my_array =3D [ 1, 2, 3, 4, 5 ]
server =3D RoxyServer.new( "hostname", 4242, my_array )
trap( "INT" ) { server.stop_server }
server.start_server.join

-- END: SCRIPT --

-- SCRIPT: client.rb --

require 'roxy'

obj =3D Roxy.new( "hostname", 4242 )
obj.class #=3D> Array
obj.methods # returns list of Array instance methods
obj.map { |c| c*2 } #=3D> [ 2, 4, 6, 8, 10 ]

-- END: SCRIPT --

Let me know what you think. I'm getting things posted as quickly as possibl=
e.

Additional features I plan to implement include allowing for ANY
Socket object to act as medium for communication, that way people can
override it with whatever protocols they would like to use.

A known limitation is that ONLY the first call of a chain (
obj.call.call.call ) will be executed remotely, the rest will be
executed locally on the result values.

So, until I get the project posted... please let me know and I can
send you one by hand.

Again, your feedback is very much appreciated.

j.
 
J

Jeff Wood

Alright, it's posted. News hasn't shown up on the Rubyforge homepage,
but that's okay =3D)

j.
 
E

Eric Hodel

Hey folks.

I know a number of people are/were interested in this.

I've just requested the rubyforge project for Roxy.

If you've watched the ruby-talk mailing list over the past few weeks,
I've been having a discussion with a number of people about
implementing clean proxy objects. Ones that don't hide the signatures
of the objects they are meant to impersonate.

Anyways, I've built what I believe is version 0.1 of the project. It
even works with blocks (see the snippets below). And, since the object
impersonates the remote, irb's auto-completion works for remote
objects.

So, as soon as the rubyforge folks validate the project, I will get
things posted for all to help make even better.

... until then, I'll simply wet your appetite with the following:

-- SCRIPT: server.rb --

require 'roxy'

my_array = [ 1, 2, 3, 4, 5 ]
server = RoxyServer.new( "hostname", 4242, my_array )
trap( "INT" ) { server.stop_server }
server.start_server.join

-- END: SCRIPT --

-- SCRIPT: client.rb --

require 'roxy'

obj = Roxy.new( "hostname", 4242 )
obj.class #=> Array
obj.methods # returns list of Array instance methods
obj.map { |c| c*2 } #=> [ 2, 4, 6, 8, 10 ]

-- END: SCRIPT --

Let me know what you think. I'm getting things posted as quickly as
possible.

Roxy looks like it reimplements a significant portion of DRb. Have
you thought about making Roxy simply a DRb server? You'll save lots
of code and can get auto-discovery for free.
Additional features I plan to implement include allowing for ANY
Socket object to act as medium for communication, that way people can
override it with whatever protocols they would like to use.

DRb gives you this for free :)
A known limitation is that ONLY the first call of a chain (
obj.call.call.call ) will be executed remotely, the rest will be
executed locally on the result values.

With DRb you can (supposing each #call returns obj) keep all calls
remote through DRb::DRbUndumped.
 
J

Jeff Wood

------=_Part_26655_23801806.1129618260251
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Eric,
I know that DRb currently supports features I don't. My goal is to have
them.
There are "features" of DRb that I don't like. So, this is my replacement
project.
j.

Hey folks.

I know a number of people are/were interested in this.

I've just requested the rubyforge project for Roxy.

If you've watched the ruby-talk mailing list over the past few weeks,
I've been having a discussion with a number of people about
implementing clean proxy objects. Ones that don't hide the signatures
of the objects they are meant to impersonate.

Anyways, I've built what I believe is version 0.1 of the project. It
even works with blocks (see the snippets below). And, since the object
impersonates the remote, irb's auto-completion works for remote
objects.

So, as soon as the rubyforge folks validate the project, I will get
things posted for all to help make even better.

... until then, I'll simply wet your appetite with the following:

-- SCRIPT: server.rb --

require 'roxy'

my_array =3D [ 1, 2, 3, 4, 5 ]
server =3D RoxyServer.new( "hostname", 4242, my_array )
trap( "INT" ) { server.stop_server }
server.start_server.join

-- END: SCRIPT --

-- SCRIPT: client.rb --

require 'roxy'

obj =3D Roxy.new( "hostname", 4242 )
obj.class #=3D> Array
obj.methods # returns list of Array instance methods
obj.map { |c| c*2 } #=3D> [ 2, 4, 6, 8, 10 ]

-- END: SCRIPT --

Let me know what you think. I'm getting things posted as quickly as
possible.

Roxy looks like it reimplements a significant portion of DRb. Have
you thought about making Roxy simply a DRb server? You'll save lots
of code and can get auto-discovery for free.
Additional features I plan to implement include allowing for ANY
Socket object to act as medium for communication, that way people can
override it with whatever protocols they would like to use.

DRb gives you this for free :)
A known limitation is that ONLY the first call of a chain (
obj.call.call.call ) will be executed remotely, the rest will be
executed locally on the result values.

With DRb you can (supposing each #call returns obj) keep all calls
remote through DRb::DRbUndumped.


--
"http://ruby-lang.org -- do you ruby?"

Jeff Wood

------=_Part_26655_23801806.1129618260251--
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,053
Latest member
BrodieSola

Latest Threads

Top