celluloid / dcell

UNMAINTAINED: See celluloid/celluloid#779 - Actor-based distributed objects in Ruby based on Celluloid and 0MQ
http://celluloid.io
MIT License
595 stars 65 forks source link

Support block proxying #40

Closed halorgium closed 11 years ago

halorgium commented 11 years ago

Once celluloid/celluloid#55 is merged, DCell will be able to piggy-back on the change and support blocks across Nodes.

halorgium commented 11 years ago

There are a few changes which I would consider making on master.

@tarcieri, some of these are backwards-incompatible. I am unsure about adding new syntax to the Marshal strings, but would like thoughts.

halorgium commented 11 years ago

@tarcieri rebased and cleaned.

halorgium commented 11 years ago

@tarcieri I now realised that we need to fix reel with master, as it depends on celluloid-io. dcell depends on reel.

halorgium commented 11 years ago

@tarcieri there is a problem with how Reel uses autostart. It is an ordering problem.

  1. Celluloid monkeypatch for Mailbox#address is added (depending on DCell.id)
  2. The autostart tries to start the core actors
  3. The linking process uses the mailbox address
  4. DCell has not yet been started and so there is no id for the mailbox to use

A solution to this is to require 'reel' before any of the monkey patches. But this does mean that there are actors which have links with now invalid addresses.