dcell 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+

|
2
2
|
=====
|
3
|
+
[](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
|