Sha256: 9997e4e4531388e9fa0fb01acb68ea32cd9284444fe946d3105f78e0c1d585e9

Contents?: true

Size: 811 Bytes

Versions: 9

Compression:

Stored size: 811 Bytes

Contents

module DCell
  class FutureProxy
    def initialize(mailbox_id,node_id,node_addr)
      @mailbox_id = mailbox_id
      @node_id = node_id
      @node_addr = node_addr
    end

    def <<(message)
      node = Node[@node_id]
      node = Node.new(@node_id, @node_addr) unless node
      node.async.send_message Message::Relay.new(self, message)
    end

    def _dump(level)
      "#{@mailbox_id}@#{@node_id}@#{@node_addr}"
    end

    # Loader for custom marshal format
    def self._load(string)
      mailbox_id, node_id, node_addr = string.split("@")

      if node_id == DCell.id
        future = Router.find(mailbox_id)
        raise "tried to unmarshal dead Celluloid::Future: #{mailbox_id}" unless future
        future
      else
        new(mailbox_id, node_id, node_addr)
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
dcell-0.16.1 lib/dcell/future_proxy.rb
stn-dcell-0.16.0 lib/dcell/future_proxy.rb
dcell-0.16.0 lib/dcell/future_proxy.rb
dcell-0.16.0.pre lib/dcell/future_proxy.rb
dcell-0.15.0 lib/dcell/future_proxy.rb
dcell-0.15.0.pre lib/dcell/future_proxy.rb
dcell-0.14.0 lib/dcell/future_proxy.rb
dcell-0.13.0 lib/dcell/future_proxy.rb
dcell-0.13.0.pre lib/dcell/future_proxy.rb