dcell 0.8.0 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +5 -3
- data/CHANGES.md +4 -4
- data/README.md +14 -4
- data/celluloid-zmq/CHANGES.md +7 -0
- data/celluloid-zmq/celluloid-zmq.gemspec +3 -3
- data/celluloid-zmq/lib/celluloid/zmq.rb +9 -6
- data/celluloid-zmq/lib/celluloid/zmq/sockets.rb +130 -0
- data/celluloid-zmq/lib/celluloid/zmq/version.rb +1 -1
- data/dcell.gemspec +4 -3
- data/lib/dcell.rb +6 -5
- data/lib/dcell/node.rb +7 -13
- data/lib/dcell/registries/moneta_adapter.rb +61 -0
- data/lib/dcell/rpc.rb +1 -1
- data/lib/dcell/server.rb +6 -19
- data/lib/dcell/version.rb +1 -1
- data/logo.png +0 -0
- data/spec/dcell/registries/moneta_adapter_spec.rb +6 -0
- metadata +34 -20
- data/celluloid-zmq/lib/celluloid/zmq/mailbox.rb +0 -13
- data/celluloid-zmq/spec/celluloid/zmq/mailbox_spec.rb +0 -6
data/.travis.yml
CHANGED
data/CHANGES.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
0.9.0
|
2
|
+
-----
|
3
|
+
* Use new Celluloid::ZMQ APIs
|
4
|
+
|
1
5
|
0.8.0
|
2
6
|
-----
|
3
7
|
* Track calls in-flight with DCell::RPC and DCell::RPC::Manager
|
@@ -12,7 +16,3 @@
|
|
12
16
|
0.0.1
|
13
17
|
-----
|
14
18
|
* Initial release
|
15
|
-
|
16
|
-
0.0.0
|
17
|
-
-----
|
18
|
-
* Vapoware release to claim the "dcell" gem name >:D
|
data/README.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
|
-
DCell
|
1
|
+
![DCell](https://github.com/tarcieri/dcell/raw/master/logo.png)
|
2
2
|
=====
|
3
|
+
[![Build Status](http://travis-ci.org/tarcieri/dcell.png)](http://travis-ci.org/tarcieri/dcell)
|
4
|
+
|
5
|
+
> "Objects can message objects transparently that live on other machines
|
6
|
+
> over the network, and you don't have to worry about the networking gunk,
|
7
|
+
> and you don't have to worry about finding them, and you don't have to
|
8
|
+
> worry about anything. It's just as if you messaged an object that's
|
9
|
+
> right next door."
|
10
|
+
> _--Steve Jobs describing the NeXT Portable Distributed Object system_
|
3
11
|
|
4
12
|
DCell is a simple and easy way to build distributed applications in Ruby.
|
5
13
|
Somewhat similar to DRb, DCell lets you easily expose Ruby objects as network
|
@@ -30,9 +38,9 @@ Not entirely, but eager early adopters are welcome!
|
|
30
38
|
Supported Platforms
|
31
39
|
-------------------
|
32
40
|
|
33
|
-
DCell works on Ruby 1.9.2/1.9.3, JRuby 1.6 (in 1.9 mode), and Rubinius 2.0.
|
41
|
+
DCell works on Ruby 1.9.2/1.9.3, JRuby 1.6 (in 1.9 mode), JRuby 1.7, and Rubinius 2.0.
|
34
42
|
|
35
|
-
To use JRuby in 1.9 mode, you'll need to pass the "--1.9" command line
|
43
|
+
To use JRuby 1.6 in 1.9 mode, you'll need to pass the "--1.9" command line
|
36
44
|
option to the JRuby executable, or set the "JRUBY_OPTS=--1.9" environment
|
37
45
|
variable:
|
38
46
|
|
@@ -41,6 +49,8 @@ variable:
|
|
41
49
|
(Note: I'd recommend putting the above in your .bashrc/.zshrc/etc in
|
42
50
|
general. 1.9 is the future, time to embrace it)
|
43
51
|
|
52
|
+
To use JRuby 1.7 in 1.9 mode...just use it :)
|
53
|
+
|
44
54
|
Celluloid works on Rubinius in either 1.8 or 1.9 mode.
|
45
55
|
|
46
56
|
All components, including the 0MQ bindings, Redis, and Zookeeper adapters
|
@@ -269,4 +279,4 @@ components.
|
|
269
279
|
Copyright
|
270
280
|
---------
|
271
281
|
|
272
|
-
Copyright (c) 2011 Tony Arcieri. See LICENSE.txt for further details.
|
282
|
+
Copyright (c) 2011 Tony Arcieri. See LICENSE.txt for further details.
|
data/celluloid-zmq/CHANGES.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
0.9.0
|
2
|
+
-----
|
3
|
+
* New 0MQ APIs which wrap ffi-rzmq's
|
4
|
+
* Terminate the 0MQ context at shutdown
|
5
|
+
* Use Celluloid::IO 0.9.0's reactor injection support so we no longer have to
|
6
|
+
subclass Celluloid::IO::Mailbox
|
7
|
+
|
1
8
|
0.8.0
|
2
9
|
-----
|
3
10
|
* Update to match internals of celluloid-io
|
@@ -11,13 +11,13 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.name = "celluloid-zmq"
|
12
12
|
gem.version = Celluloid::ZMQ::VERSION
|
13
13
|
|
14
|
-
gem.add_dependency "celluloid", "~> 0.
|
15
|
-
gem.add_dependency "celluloid-io", "~> 0.
|
14
|
+
gem.add_dependency "celluloid", "~> 0.9.0"
|
15
|
+
gem.add_dependency "celluloid-io", "~> 0.9.0"
|
16
16
|
gem.add_dependency "ffi"
|
17
17
|
gem.add_dependency "ffi-rzmq"
|
18
18
|
|
19
19
|
gem.add_development_dependency "rake"
|
20
|
-
gem.add_development_dependency "rspec"
|
20
|
+
gem.add_development_dependency "rspec"
|
21
21
|
|
22
22
|
# Files
|
23
23
|
ignores = File.read(".gitignore").split(/\r?\n/).reject{ |f| f =~ /^(#.+|\s*)$/ }.map {|f| Dir[f] }.flatten
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'ffi-rzmq'
|
2
2
|
|
3
3
|
require 'celluloid/io'
|
4
|
-
require 'celluloid/zmq/mailbox'
|
5
4
|
require 'celluloid/zmq/reactor'
|
5
|
+
require 'celluloid/zmq/sockets'
|
6
6
|
require 'celluloid/zmq/version'
|
7
7
|
require 'celluloid/zmq/waker'
|
8
8
|
|
@@ -15,19 +15,22 @@ module Celluloid
|
|
15
15
|
# Included hook to pull in Celluloid
|
16
16
|
def included(klass)
|
17
17
|
klass.send :include, ::Celluloid
|
18
|
-
klass.use_mailbox Celluloid::ZMQ::
|
18
|
+
klass.use_mailbox { Celluloid::IO::Mailbox.new ZMQ::Reactor.new }
|
19
19
|
end
|
20
20
|
|
21
21
|
# Obtain a 0MQ context (or lazily initialize it)
|
22
|
-
def context
|
23
|
-
@context
|
22
|
+
def context(threads = 1)
|
23
|
+
return @context if @context
|
24
|
+
@context = ::ZMQ::Context.new(threads)
|
25
|
+
at_exit { @context.terminate }
|
26
|
+
@context
|
24
27
|
end
|
28
|
+
alias_method :init, :context
|
25
29
|
end
|
26
30
|
|
27
31
|
extend Forwardable
|
28
32
|
|
29
33
|
# Wait for the given IO object to become readable/writeable
|
30
|
-
def_delegators 'current_actor.mailbox.reactor',
|
31
|
-
:wait_readable, :wait_writeable
|
34
|
+
def_delegators 'current_actor.mailbox.reactor', :wait_readable, :wait_writeable
|
32
35
|
end
|
33
36
|
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
module Celluloid
|
2
|
+
module ZMQ
|
3
|
+
class Socket
|
4
|
+
# Create a new socket
|
5
|
+
def initialize(type)
|
6
|
+
@socket = Celluloid::ZMQ.context.socket ::ZMQ.const_get(type.to_s.upcase)
|
7
|
+
end
|
8
|
+
|
9
|
+
# Connect to the given 0MQ address
|
10
|
+
# Address should be in the form: tcp://1.2.3.4:5678/
|
11
|
+
def connect(addr)
|
12
|
+
puts "zomg connecting"
|
13
|
+
unless ::ZMQ::Util.resultcode_ok? @socket.connect addr
|
14
|
+
raise IOError, "error connecting to #{addr}: #{::ZMQ::Util.error_string}"
|
15
|
+
end
|
16
|
+
true
|
17
|
+
end
|
18
|
+
|
19
|
+
# Bind to the given 0MQ address
|
20
|
+
# Address should be in the form: tcp://1.2.3.4:5678/
|
21
|
+
def bind(addr)
|
22
|
+
unless ::ZMQ::Util.resultcode_ok? @socket.setsockopt(::ZMQ::LINGER, 0)
|
23
|
+
@socket.close
|
24
|
+
raise IOError, "couldn't set ZMQ::LINGER: #{::ZMQ::Util.error_string}"
|
25
|
+
end
|
26
|
+
|
27
|
+
unless ::ZMQ::Util.resultcode_ok? @socket.bind(addr)
|
28
|
+
raise IOError, "couldn't bind to #{addr}: #{::ZMQ::Util.error_string}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# Close the socket
|
33
|
+
def close
|
34
|
+
@socket.close
|
35
|
+
end
|
36
|
+
|
37
|
+
# Does the 0MQ socket support evented operation?
|
38
|
+
def evented?
|
39
|
+
actor = Thread.current[:actor]
|
40
|
+
return unless actor
|
41
|
+
|
42
|
+
mailbox = actor.mailbox
|
43
|
+
mailbox.is_a?(Celluloid::IO::Mailbox) && mailbox.reactor.is_a?(Celluloid::ZMQ::Reactor)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Hide ffi-rzmq internals
|
47
|
+
alias_method :inspect, :to_s
|
48
|
+
end
|
49
|
+
|
50
|
+
# Readable 0MQ sockets have a read method
|
51
|
+
module ReadableSocket
|
52
|
+
# Read a message from the socket
|
53
|
+
def read(buffer = '')
|
54
|
+
Celluloid.current_actor.wait_readable(@socket) if evented?
|
55
|
+
|
56
|
+
unless ::ZMQ::Util.resultcode_ok? @socket.recv_string buffer
|
57
|
+
raise IOError, "error receiving ZMQ string: #{::ZMQ::Util.error_string}"
|
58
|
+
end
|
59
|
+
buffer
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# Writable 0MQ sockets have a send method
|
64
|
+
module WritableSocket
|
65
|
+
# Send a message to the socket
|
66
|
+
def send(message)
|
67
|
+
unless ::ZMQ::Util.resultcode_ok? @socket.send_string message
|
68
|
+
raise IOError, "error sending 0MQ message: #{::ZMQ::Util.error_string}"
|
69
|
+
end
|
70
|
+
|
71
|
+
message
|
72
|
+
end
|
73
|
+
alias_method :<<, :send
|
74
|
+
end
|
75
|
+
|
76
|
+
# ReqSockets are the counterpart of RepSockets (REQ/REP)
|
77
|
+
class ReqSocket < Socket
|
78
|
+
include ReadableSocket
|
79
|
+
|
80
|
+
def initialize
|
81
|
+
super :req
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
# RepSockets are the counterpart of ReqSockets (REQ/REP)
|
86
|
+
class RepSocket < Socket
|
87
|
+
include WritableSocket
|
88
|
+
|
89
|
+
def initialize
|
90
|
+
super :rep
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# PushSockets are the counterpart of PullSockets (PUSH/PULL)
|
95
|
+
class PushSocket < Socket
|
96
|
+
include WritableSocket
|
97
|
+
|
98
|
+
def initialize
|
99
|
+
super :push
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
# PullSockets are the counterpart of PushSockets (PUSH/PULL)
|
104
|
+
class PullSocket < Socket
|
105
|
+
include ReadableSocket
|
106
|
+
|
107
|
+
def initialize
|
108
|
+
super :pull
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
# PubSockets are the counterpart of SubSockets (PUB/SUB)
|
113
|
+
class PubSocket < Socket
|
114
|
+
include WritableSocket
|
115
|
+
|
116
|
+
def initialize
|
117
|
+
super :pub
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
# SubSockets are the counterpart of PubSockets (PUB/SUB)
|
122
|
+
class SubSocket < Socket
|
123
|
+
include ReadableSocket
|
124
|
+
|
125
|
+
def initialize
|
126
|
+
super :sub
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
data/dcell.gemspec
CHANGED
@@ -16,12 +16,13 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
17
17
|
gem.require_paths = ["lib"]
|
18
18
|
|
19
|
-
gem.add_dependency "celluloid",
|
20
|
-
gem.add_dependency "celluloid-zmq", "~> 0.
|
19
|
+
gem.add_dependency "celluloid", "~> 0.9.0"
|
20
|
+
gem.add_dependency "celluloid-zmq", "~> 0.9.0"
|
21
21
|
gem.add_dependency "redis"
|
22
22
|
gem.add_dependency "redis-namespace"
|
23
|
+
gem.add_dependency "moneta"
|
23
24
|
|
24
25
|
gem.add_development_dependency "rake"
|
25
|
-
gem.add_development_dependency "rspec"
|
26
|
+
gem.add_development_dependency "rspec"
|
26
27
|
#gem.add_development_dependency "zk"
|
27
28
|
end
|
data/lib/dcell.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'celluloid'
|
2
2
|
require 'celluloid/zmq'
|
3
|
-
require 'dcell/version'
|
4
3
|
|
4
|
+
Celluloid::ZMQ.init
|
5
|
+
|
6
|
+
require 'dcell/version'
|
5
7
|
require 'dcell/actor_proxy'
|
6
8
|
require 'dcell/directory'
|
7
9
|
require 'dcell/mailbox_proxy'
|
@@ -14,18 +16,17 @@ require 'dcell/rpc'
|
|
14
16
|
require 'dcell/server'
|
15
17
|
|
16
18
|
require 'dcell/registries/redis_adapter'
|
19
|
+
require 'dcell/registries/moneta_adapter'
|
20
|
+
|
17
21
|
require 'dcell/celluloid_ext'
|
18
22
|
|
19
23
|
# Distributed Celluloid
|
20
24
|
module DCell
|
21
25
|
DEFAULT_PORT = 7777 # Default DCell port
|
22
|
-
ZMQ_POOL_SIZE = 1 # DCell uses a fixed-size 0MQ thread pool
|
23
|
-
|
24
|
-
@zmq_context = Celluloid::ZMQ.context = ::ZMQ::Context.new(ZMQ_POOL_SIZE)
|
25
26
|
@config_lock = Mutex.new
|
26
27
|
|
27
28
|
class << self
|
28
|
-
attr_reader :me, :registry
|
29
|
+
attr_reader :me, :registry
|
29
30
|
|
30
31
|
# Configure DCell with the following options:
|
31
32
|
#
|
data/lib/dcell/node.rb
CHANGED
@@ -84,11 +84,13 @@ module DCell
|
|
84
84
|
def socket
|
85
85
|
return @socket if @socket
|
86
86
|
|
87
|
-
@socket =
|
88
|
-
|
87
|
+
@socket = Celluloid::ZMQ::PushSocket.new
|
88
|
+
begin
|
89
|
+
@socket.connect addr
|
90
|
+
rescue IOError
|
89
91
|
@socket.close
|
90
92
|
@socket = nil
|
91
|
-
raise
|
93
|
+
raise
|
92
94
|
end
|
93
95
|
|
94
96
|
transition :connected
|
@@ -126,20 +128,12 @@ module DCell
|
|
126
128
|
# Send a message to another DCell node
|
127
129
|
def send_message(message)
|
128
130
|
begin
|
129
|
-
|
131
|
+
message = Marshal.dump(message)
|
130
132
|
rescue => ex
|
131
133
|
abort ex
|
132
134
|
end
|
133
135
|
|
134
|
-
|
135
|
-
# Ideally we could reset the heartbeat counter now because we've sent
|
136
|
-
# a message. Heartbeats could work off all messages rather than just
|
137
|
-
# DCell::Message::Heartbeat. Unfortunately this functionality is not
|
138
|
-
# yet implemented, sorry!
|
139
|
-
# @heartbeat.reset
|
140
|
-
else
|
141
|
-
raise "error sending 0MQ message: #{::ZMQ::Util.error_string}"
|
142
|
-
end
|
136
|
+
socket << message
|
143
137
|
end
|
144
138
|
alias_method :<<, :send_message
|
145
139
|
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'moneta'
|
2
|
+
require 'moneta/memory'
|
3
|
+
|
4
|
+
module DCell
|
5
|
+
module Registry
|
6
|
+
class MonetaAdapter
|
7
|
+
def initialize(options)
|
8
|
+
# Convert all options to symbols :/
|
9
|
+
options = options.inject({}) { |h,(k,v)| h[k.to_sym] = v; h }
|
10
|
+
|
11
|
+
@env = options[:env] || 'production'
|
12
|
+
@namespace = options[:namespace] || "dcell_#{@env}"
|
13
|
+
|
14
|
+
# We might want to use something like a TieredCache later..
|
15
|
+
# Memory + BasicFile..
|
16
|
+
# @moneta = Moneta::TieredCache.new options
|
17
|
+
@moneta = Moneta::Memory.new options
|
18
|
+
|
19
|
+
@node_registry = Registry.new(@moneta, :nodes)
|
20
|
+
@global_registry = Registry.new(@moneta, :globals)
|
21
|
+
end
|
22
|
+
|
23
|
+
class Registry
|
24
|
+
def initialize(moneta, name)
|
25
|
+
@name = name
|
26
|
+
@moneta = moneta
|
27
|
+
end
|
28
|
+
|
29
|
+
def get(key)
|
30
|
+
@moneta[@name][key.to_s]
|
31
|
+
end
|
32
|
+
|
33
|
+
def set(key, value)
|
34
|
+
@moneta[@name][key.to_s] = value
|
35
|
+
end
|
36
|
+
|
37
|
+
def all
|
38
|
+
@moneta[@name].keys
|
39
|
+
end
|
40
|
+
|
41
|
+
# DCell registry behaviors
|
42
|
+
alias_method :nodes, :all
|
43
|
+
alias_method :global_keys, :all
|
44
|
+
|
45
|
+
def clear
|
46
|
+
@moneta.delete(@name)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def get_node(node_id); @node_registry.get(node_id) end
|
51
|
+
def set_node(node_id, addr); @node_registry.set(node_id, addr) end
|
52
|
+
def nodes; @node_registry.nodes end
|
53
|
+
def clear_nodes; @node_registry.clear end
|
54
|
+
|
55
|
+
def get_global(key); @global_registry.get(key) end
|
56
|
+
def set_global(key, value); @global_registry.set(key, value) end
|
57
|
+
def global_keys; @global_registry.global_keys end
|
58
|
+
def clear_globals; @global_registry.clear end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/lib/dcell/rpc.rb
CHANGED
data/lib/dcell/server.rb
CHANGED
@@ -6,16 +6,13 @@ module DCell
|
|
6
6
|
# Bind to the given 0MQ address (in URL form ala tcp://host:port)
|
7
7
|
def initialize
|
8
8
|
@addr = DCell.addr
|
9
|
-
@socket =
|
9
|
+
@socket = PullSocket.new
|
10
10
|
|
11
|
-
|
12
|
-
@socket.
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
unless ::ZMQ::Util.resultcode_ok? @socket.bind(@addr)
|
11
|
+
begin
|
12
|
+
@socket.bind(@addr)
|
13
|
+
rescue IOError
|
17
14
|
@socket.close
|
18
|
-
raise
|
15
|
+
raise
|
19
16
|
end
|
20
17
|
|
21
18
|
run!
|
@@ -23,17 +20,7 @@ module DCell
|
|
23
20
|
|
24
21
|
# Wait for incoming 0MQ messages
|
25
22
|
def run
|
26
|
-
while true
|
27
|
-
wait_readable @socket
|
28
|
-
message = ''
|
29
|
-
|
30
|
-
rc = @socket.recv_string message
|
31
|
-
if ::ZMQ::Util.resultcode_ok? rc
|
32
|
-
handle_message message
|
33
|
-
else
|
34
|
-
raise "error receiving ZMQ string: #{::ZMQ::Util.error_string}"
|
35
|
-
end
|
36
|
-
end
|
23
|
+
while true; handle_message @socket.read; end
|
37
24
|
end
|
38
25
|
|
39
26
|
# Shut down the server
|
data/lib/dcell/version.rb
CHANGED
data/logo.png
ADDED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dcell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,33 +9,33 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-02-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: celluloid
|
16
|
-
requirement: &
|
16
|
+
requirement: &70186417956180 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.9.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70186417956180
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: celluloid-zmq
|
27
|
-
requirement: &
|
27
|
+
requirement: &70186417955420 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.
|
32
|
+
version: 0.9.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70186417955420
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: redis
|
38
|
-
requirement: &
|
38
|
+
requirement: &70186417954800 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70186417954800
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: redis-namespace
|
49
|
-
requirement: &
|
49
|
+
requirement: &70186417954340 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,21 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70186417954340
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: moneta
|
60
|
+
requirement: &70186418040120 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70186418040120
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: rake
|
60
|
-
requirement: &
|
71
|
+
requirement: &70186418039640 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ! '>='
|
@@ -65,18 +76,18 @@ dependencies:
|
|
65
76
|
version: '0'
|
66
77
|
type: :development
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *70186418039640
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: rspec
|
71
|
-
requirement: &
|
82
|
+
requirement: &70186418039200 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
|
-
- -
|
85
|
+
- - ! '>='
|
75
86
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
87
|
+
version: '0'
|
77
88
|
type: :development
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *70186418039200
|
80
91
|
description: DCell is an distributed object framework based on Celluloid built on
|
81
92
|
0MQ and Zookeeper
|
82
93
|
email:
|
@@ -103,12 +114,11 @@ files:
|
|
103
114
|
- celluloid-zmq/Rakefile
|
104
115
|
- celluloid-zmq/celluloid-zmq.gemspec
|
105
116
|
- celluloid-zmq/lib/celluloid/zmq.rb
|
106
|
-
- celluloid-zmq/lib/celluloid/zmq/mailbox.rb
|
107
117
|
- celluloid-zmq/lib/celluloid/zmq/reactor.rb
|
118
|
+
- celluloid-zmq/lib/celluloid/zmq/sockets.rb
|
108
119
|
- celluloid-zmq/lib/celluloid/zmq/version.rb
|
109
120
|
- celluloid-zmq/lib/celluloid/zmq/waker.rb
|
110
121
|
- celluloid-zmq/spec/celluloid/zmq/actor_spec.rb
|
111
|
-
- celluloid-zmq/spec/celluloid/zmq/mailbox_spec.rb
|
112
122
|
- celluloid-zmq/spec/spec_helper.rb
|
113
123
|
- dcell.gemspec
|
114
124
|
- lib/dcell.rb
|
@@ -119,6 +129,7 @@ files:
|
|
119
129
|
- lib/dcell/mailbox_proxy.rb
|
120
130
|
- lib/dcell/messages.rb
|
121
131
|
- lib/dcell/node.rb
|
132
|
+
- lib/dcell/registries/moneta_adapter.rb
|
122
133
|
- lib/dcell/registries/redis_adapter.rb
|
123
134
|
- lib/dcell/registries/zk_adapter.rb
|
124
135
|
- lib/dcell/responses.rb
|
@@ -127,11 +138,13 @@ files:
|
|
127
138
|
- lib/dcell/rspec.rb
|
128
139
|
- lib/dcell/server.rb
|
129
140
|
- lib/dcell/version.rb
|
141
|
+
- logo.png
|
130
142
|
- spec/dcell/actor_proxy_spec.rb
|
131
143
|
- spec/dcell/celluloid_ext_spec.rb
|
132
144
|
- spec/dcell/directory_spec.rb
|
133
145
|
- spec/dcell/global_spec.rb
|
134
146
|
- spec/dcell/node_spec.rb
|
147
|
+
- spec/dcell/registries/moneta_adapter_spec.rb
|
135
148
|
- spec/dcell/registries/redis_adapter_spec.rb
|
136
149
|
- spec/dcell/registries/zk_adapter_spec.rb
|
137
150
|
- spec/spec_helper.rb
|
@@ -170,6 +183,7 @@ test_files:
|
|
170
183
|
- spec/dcell/directory_spec.rb
|
171
184
|
- spec/dcell/global_spec.rb
|
172
185
|
- spec/dcell/node_spec.rb
|
186
|
+
- spec/dcell/registries/moneta_adapter_spec.rb
|
173
187
|
- spec/dcell/registries/redis_adapter_spec.rb
|
174
188
|
- spec/dcell/registries/zk_adapter_spec.rb
|
175
189
|
- spec/spec_helper.rb
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module Celluloid
|
2
|
-
module ZMQ
|
3
|
-
# A Celluloid mailbox for Actors that wait on 0MQ sockets
|
4
|
-
class Mailbox < Celluloid::IO::Mailbox
|
5
|
-
def initialize
|
6
|
-
# More APIs and less monkeypatching would be useful here
|
7
|
-
@messages = []
|
8
|
-
@lock = Mutex.new
|
9
|
-
@reactor = Reactor.new
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|