celluloid 0.17.2 → 0.18.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.
- checksums.yaml +5 -5
- data/CHANGES.md +340 -75
- data/CONDUCT.md +13 -0
- data/CONTRIBUTING.md +39 -0
- data/LICENSE.txt +1 -1
- data/README.md +54 -150
- data/REFACTOR.md +1 -0
- data/architecture.md +120 -0
- data/examples/basic_usage.rb +1 -1
- data/examples/configurations.rb +78 -0
- data/examples/futures.rb +1 -1
- data/examples/ring.rb +5 -4
- data/examples/simple_pmap.rb +1 -1
- data/examples/stack.rb +2 -2
- data/examples/supervisors_and_registry.rb +82 -0
- data/examples/timers.rb +2 -2
- data/lib/celluloid.rb +78 -65
- data/lib/celluloid/actor.rb +27 -17
- data/lib/celluloid/actor/system.rb +13 -29
- data/lib/celluloid/autostart.rb +6 -1
- data/lib/celluloid/call/async.rb +2 -0
- data/lib/celluloid/call/sync.rb +10 -3
- data/lib/celluloid/calls.rb +13 -13
- data/lib/celluloid/cell.rb +5 -9
- data/lib/celluloid/condition.rb +3 -3
- data/lib/celluloid/core_ext.rb +0 -2
- data/lib/celluloid/debug.rb +3 -0
- data/lib/celluloid/exceptions.rb +2 -2
- data/lib/celluloid/future.rb +8 -10
- data/lib/celluloid/group.rb +16 -6
- data/lib/celluloid/group/pool.rb +1 -3
- data/lib/celluloid/group/spawner.rb +2 -6
- data/lib/celluloid/internals/call_chain.rb +15 -0
- data/lib/celluloid/internals/cpu_counter.rb +62 -0
- data/lib/celluloid/internals/handlers.rb +42 -0
- data/lib/celluloid/internals/links.rb +38 -0
- data/lib/celluloid/internals/logger.rb +104 -0
- data/lib/celluloid/internals/method.rb +34 -0
- data/lib/celluloid/internals/properties.rb +32 -0
- data/lib/celluloid/internals/receivers.rb +64 -0
- data/lib/celluloid/internals/registry.rb +102 -0
- data/lib/celluloid/internals/responses.rb +46 -0
- data/lib/celluloid/internals/signals.rb +24 -0
- data/lib/celluloid/internals/stack.rb +74 -0
- data/lib/celluloid/internals/stack/dump.rb +12 -0
- data/lib/celluloid/internals/stack/states.rb +72 -0
- data/lib/celluloid/internals/stack/summary.rb +12 -0
- data/lib/celluloid/internals/task_set.rb +51 -0
- data/lib/celluloid/internals/thread_handle.rb +52 -0
- data/lib/celluloid/internals/uuid.rb +40 -0
- data/lib/celluloid/logging/incident.rb +21 -0
- data/lib/celluloid/logging/incident_logger.rb +147 -0
- data/lib/celluloid/logging/incident_reporter.rb +49 -0
- data/lib/celluloid/logging/log_event.rb +20 -0
- data/lib/celluloid/logging/ring_buffer.rb +64 -0
- data/lib/celluloid/mailbox.rb +22 -9
- data/lib/celluloid/mailbox/evented.rb +13 -7
- data/lib/celluloid/notifications.rb +95 -0
- data/lib/celluloid/pool.rb +6 -0
- data/lib/celluloid/probe.rb +81 -0
- data/lib/celluloid/proxy/abstract.rb +38 -7
- data/lib/celluloid/proxy/actor.rb +0 -5
- data/lib/celluloid/proxy/async.rb +2 -18
- data/lib/celluloid/proxy/block.rb +2 -1
- data/lib/celluloid/proxy/cell.rb +1 -7
- data/lib/celluloid/proxy/future.rb +3 -21
- data/lib/celluloid/proxy/sync.rb +2 -20
- data/lib/celluloid/rspec.rb +22 -34
- data/lib/celluloid/supervision.rb +17 -0
- data/lib/celluloid/supervision/configuration.rb +169 -0
- data/lib/celluloid/supervision/configuration/injections.rb +8 -0
- data/lib/celluloid/supervision/configuration/instance.rb +113 -0
- data/lib/celluloid/supervision/constants.rb +123 -0
- data/lib/celluloid/supervision/container.rb +144 -0
- data/lib/celluloid/supervision/container/behavior.rb +89 -0
- data/lib/celluloid/supervision/container/behavior/pool.rb +71 -0
- data/lib/celluloid/supervision/container/behavior/tree.rb +23 -0
- data/lib/celluloid/supervision/container/injections.rb +8 -0
- data/lib/celluloid/supervision/container/instance.rb +116 -0
- data/lib/celluloid/supervision/container/pool.rb +210 -0
- data/lib/celluloid/supervision/service.rb +27 -0
- data/lib/celluloid/supervision/supervise.rb +34 -0
- data/lib/celluloid/supervision/validation.rb +40 -0
- data/lib/celluloid/supervision/version.rb +5 -0
- data/lib/celluloid/system_events.rb +10 -3
- data/lib/celluloid/task.rb +25 -12
- data/lib/celluloid/task/fibered.rb +6 -2
- data/lib/celluloid/task/threaded.rb +3 -3
- data/lib/celluloid/test.rb +5 -2
- data/lib/celluloid/thread.rb +0 -2
- data/lib/celluloid/version.rb +1 -1
- data/spec/celluloid/block_spec.rb +29 -32
- data/spec/celluloid/calls_spec.rb +5 -15
- data/spec/celluloid/future_spec.rb +7 -1
- data/spec/celluloid/internals/cpu_counter_spec.rb +129 -0
- data/spec/celluloid/internals/links_spec.rb +43 -0
- data/spec/celluloid/internals/properties_spec.rb +40 -0
- data/spec/celluloid/internals/registry_spec.rb +62 -0
- data/spec/celluloid/internals/stack/dump_spec.rb +4 -0
- data/spec/celluloid/internals/stack/summary_spec.rb +4 -0
- data/spec/celluloid/internals/thread_handle_spec.rb +60 -0
- data/spec/celluloid/internals/uuid_spec.rb +9 -0
- data/spec/celluloid/logging/ring_buffer_spec.rb +36 -0
- data/spec/celluloid/mailbox/evented_spec.rb +21 -19
- data/spec/celluloid/misc/leak_spec.rb +3 -4
- data/spec/celluloid/notifications_spec.rb +140 -0
- data/spec/celluloid/probe_spec.rb +102 -0
- data/spec/celluloid/proxy_spec.rb +33 -0
- data/spec/celluloid/supervision/behavior_spec.rb +74 -0
- data/spec/celluloid/supervision/configuration_spec.rb +181 -0
- data/spec/celluloid/supervision/container_spec.rb +72 -0
- data/spec/celluloid/supervision/instance_spec.rb +13 -0
- data/spec/celluloid/supervision/root_spec.rb +28 -0
- data/spec/celluloid/supervision/supervisor_spec.rb +93 -0
- data/spec/celluloid/task/fibered_spec.rb +1 -3
- data/spec/celluloid/task/threaded_spec.rb +1 -3
- data/spec/shared/actor_examples.rb +65 -29
- data/spec/shared/group_examples.rb +2 -2
- data/spec/shared/mailbox_examples.rb +1 -1
- data/spec/shared/stack_examples.rb +87 -0
- data/spec/shared/task_examples.rb +2 -3
- data/spec/spec_helper.rb +2 -4
- data/spec/support/configure_rspec.rb +3 -4
- data/spec/support/coverage.rb +2 -4
- data/spec/support/crash_checking.rb +2 -2
- data/spec/support/examples/actor_class.rb +3 -8
- data/spec/support/examples/call_class.rb +2 -2
- data/spec/support/examples/container_class.rb +35 -0
- data/spec/support/examples/evented_mailbox_class.rb +1 -2
- data/spec/support/examples/stack_classes.rb +58 -0
- data/spec/support/examples/stack_methods.rb +23 -0
- data/spec/support/examples/subordinate_class.rb +19 -0
- data/spec/support/logging.rb +3 -34
- data/spec/support/loose_threads.rb +3 -24
- data/spec/support/reset_class_variables.rb +5 -1
- data/spec/support/stubbing.rb +1 -1
- metadata +93 -291
- data/culture/CONDUCT.md +0 -28
- data/culture/Gemfile +0 -9
- data/culture/LICENSE.txt +0 -22
- data/culture/README.md +0 -22
- data/culture/Rakefile +0 -5
- data/culture/SYNC.md +0 -70
- data/culture/celluloid-culture.gemspec +0 -18
- data/culture/gems/README.md +0 -39
- data/culture/gems/dependencies.yml +0 -85
- data/culture/gems/loader.rb +0 -101
- data/culture/rubocop/README.md +0 -38
- data/culture/rubocop/lint.yml +0 -8
- data/culture/rubocop/metrics.yml +0 -15
- data/culture/rubocop/perf.yml +0 -0
- data/culture/rubocop/rubocop.yml +0 -5
- data/culture/rubocop/style.yml +0 -57
- data/culture/spec/gems_spec.rb +0 -2
- data/culture/spec/spec_helper.rb +0 -0
- data/culture/spec/sync_spec.rb +0 -2
- data/culture/sync.rb +0 -56
- data/culture/tasks/rspec.rake +0 -5
- data/culture/tasks/rubocop.rake +0 -2
- data/lib/celluloid/actor/manager.rb +0 -7
- data/lib/celluloid/backported.rb +0 -2
- data/lib/celluloid/current.rb +0 -2
- data/lib/celluloid/deprecate.rb +0 -21
- data/lib/celluloid/fiber.rb +0 -32
- data/lib/celluloid/managed.rb +0 -3
- data/lib/celluloid/notices.rb +0 -15
- data/spec/celluloid/actor/manager_spec.rb +0 -0
- data/spec/deprecate/actor_system_spec.rb +0 -72
- data/spec/deprecate/block_spec.rb +0 -52
- data/spec/deprecate/calls_spec.rb +0 -39
- data/spec/deprecate/evented_mailbox_spec.rb +0 -34
- data/spec/deprecate/future_spec.rb +0 -32
- data/spec/deprecate/internal_pool_spec.rb +0 -4
- data/spec/support/env.rb +0 -21
data/examples/futures.rb
CHANGED
data/examples/ring.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
$LOAD_PATH.push File.expand_path("
|
3
|
+
$LOAD_PATH.push File.expand_path("../lib", __dir__)
|
4
4
|
require "celluloid/autostart"
|
5
5
|
|
6
6
|
class Ring
|
@@ -28,7 +28,7 @@ class Ring
|
|
28
28
|
|
29
29
|
# Go around the ring the given number of times
|
30
30
|
def run(n)
|
31
|
-
|
31
|
+
raise ArgumentError, "I can't go around a negative number of times" if n < 0
|
32
32
|
|
33
33
|
async.around n
|
34
34
|
wait :done
|
@@ -48,14 +48,15 @@ if $PROGRAM_NAME == __FILE__
|
|
48
48
|
require "benchmark"
|
49
49
|
SIZE = 512
|
50
50
|
TIMES = 10
|
51
|
+
ring = nil
|
51
52
|
|
52
53
|
puts "*** Creating a #{SIZE} node ring..."
|
53
54
|
puts Benchmark.measure {
|
54
|
-
|
55
|
+
ring = Ring.new(SIZE)
|
55
56
|
}
|
56
57
|
|
57
58
|
puts "*** Sending a message around #{TIMES} times"
|
58
59
|
puts Benchmark.measure {
|
59
|
-
|
60
|
+
ring.run(TIMES)
|
60
61
|
}
|
61
62
|
end
|
data/examples/simple_pmap.rb
CHANGED
data/examples/stack.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
$LOAD_PATH.push File.expand_path("
|
3
|
+
$LOAD_PATH.push File.expand_path("../lib", __dir__)
|
4
4
|
require "celluloid/autostart"
|
5
5
|
|
6
6
|
# This example builds on basic_usage.rb to show two things about #async: the
|
@@ -17,7 +17,7 @@ class Stack
|
|
17
17
|
def push(x)
|
18
18
|
@ary.push x
|
19
19
|
end
|
20
|
-
|
20
|
+
alias << push
|
21
21
|
|
22
22
|
def pop
|
23
23
|
@ary.pop
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require "celluloid/autostart"
|
2
|
+
|
3
|
+
class MyActor
|
4
|
+
include Celluloid
|
5
|
+
attr_reader :state
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@state = :clean
|
9
|
+
end
|
10
|
+
|
11
|
+
def broken_method
|
12
|
+
@state = :dirty
|
13
|
+
oh_crap_im_totally_broken
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
#
|
18
|
+
# Using the Supervisor API directly
|
19
|
+
#
|
20
|
+
|
21
|
+
puts "*** Demonstrating using the Supervisor API directly"
|
22
|
+
|
23
|
+
# Calling supervise directly returns the supervisor
|
24
|
+
supervisor = MyActor.supervise
|
25
|
+
|
26
|
+
# We can get to the current version of an actor by calling
|
27
|
+
# Celluloid::Supervisor#actors. This prints ':clean'
|
28
|
+
puts "We should be in a clean state now: #{supervisor.actors.first.state}"
|
29
|
+
puts "Brace yourself for a crash message..."
|
30
|
+
|
31
|
+
# If we call a method that crashes an actor, it will print out a debug message,
|
32
|
+
# then restart an actor in a clean state
|
33
|
+
begin
|
34
|
+
supervisor.actors.first.broken_method
|
35
|
+
rescue NameError
|
36
|
+
puts "Uhoh, we crashed the actor..."
|
37
|
+
end
|
38
|
+
|
39
|
+
puts "The supervisor should automatically restart the actor"
|
40
|
+
|
41
|
+
# By now we'll be back in a :clean state!
|
42
|
+
begin
|
43
|
+
puts "We should now be in a clean state again: #{supervisor.actors.first.state}"
|
44
|
+
rescue Celluloid::DeadActorError
|
45
|
+
# Perhaps we got ahold of the actor before the supervisor restarted it
|
46
|
+
retry
|
47
|
+
end
|
48
|
+
|
49
|
+
#
|
50
|
+
# Using the Actor Registry
|
51
|
+
# This is the preferred approach and will make using DCell easier
|
52
|
+
#
|
53
|
+
|
54
|
+
puts "*** Demonstrating using the actor registry"
|
55
|
+
|
56
|
+
# We can give our actor a name and thus avoid interacting with the supervisor
|
57
|
+
MyActor.supervise as: :my_actor
|
58
|
+
|
59
|
+
# Same as above, just getting the actor from a different place
|
60
|
+
puts "We should be in a clean state now: #{Celluloid::Actor[:my_actor].state}"
|
61
|
+
puts "Brace yourself for a crash message..."
|
62
|
+
|
63
|
+
# If we call a method that crashes an actor, it will print out a debug message,
|
64
|
+
# then restart an actor in a clean state
|
65
|
+
begin
|
66
|
+
Celluloid::Actor[:my_actor].broken_method
|
67
|
+
rescue NameError
|
68
|
+
puts "Uhoh, we crashed the actor..."
|
69
|
+
end
|
70
|
+
|
71
|
+
puts "The supervisor should automatically restart the actor"
|
72
|
+
|
73
|
+
# By now we'll be back in a :clean state!
|
74
|
+
begin
|
75
|
+
puts "We should now be in a clean state again: #{Celluloid::Actor[:my_actor].state}"
|
76
|
+
rescue Celluloid::DeadActorError
|
77
|
+
# Perhaps we got ahold of the actor before the supervisor restarted it
|
78
|
+
# Don't want to catch Celluloid::DeadActorError all over the place? If this
|
79
|
+
# code were in a supervised Celluloid::Actor itself, the supervisor would
|
80
|
+
# catch Celluloid::DeadActorError and automatically restart this actor
|
81
|
+
retry
|
82
|
+
end
|
data/examples/timers.rb
CHANGED
data/lib/celluloid.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
+
# TODO: eliminate use of global variables
|
2
|
+
require "English"
|
3
|
+
|
1
4
|
require "logger"
|
2
|
-
require "thread"
|
3
|
-
require "timeout"
|
4
5
|
require "set"
|
6
|
+
require "timeout"
|
5
7
|
|
8
|
+
# !!! DO NOT INTRODUCE ADDITIONAL GLOBAL VARIABLES !!!
|
9
|
+
# rubocop:disable Style/GlobalVars
|
6
10
|
$CELLULOID_DEBUG = false
|
7
|
-
$
|
11
|
+
$CELLULOID_MONITORING = false
|
12
|
+
# rubocop:enable Style/GlobalVars
|
8
13
|
|
9
14
|
require "celluloid/version"
|
10
|
-
require "celluloid/notices"
|
11
|
-
|
12
|
-
$CELLULOID_BACKPORTED = false if defined?(CELLULOID_FUTURE) && CELLULOID_FUTURE
|
13
|
-
$CELLULOID_BACKPORTED = (ENV["CELLULOID_BACKPORTED"] != "false") unless defined?($CELLULOID_BACKPORTED)
|
14
|
-
Celluloid::Notices.backported if $CELLULOID_BACKPORTED
|
15
15
|
|
16
16
|
module Celluloid
|
17
17
|
# Expose all instance methods as singleton methods
|
@@ -21,7 +21,7 @@ module Celluloid
|
|
21
21
|
LINKING_TIMEOUT = 5
|
22
22
|
|
23
23
|
# Warning message added to Celluloid objects accessed outside their actors
|
24
|
-
BARE_OBJECT_WARNING_MESSAGE = "WARNING: BARE CELLULOID OBJECT "
|
24
|
+
BARE_OBJECT_WARNING_MESSAGE = "WARNING: BARE CELLULOID OBJECT ".freeze
|
25
25
|
|
26
26
|
class << self
|
27
27
|
attr_writer :actor_system # Default Actor System
|
@@ -33,9 +33,11 @@ module Celluloid
|
|
33
33
|
|
34
34
|
def actor_system
|
35
35
|
if Thread.current.celluloid?
|
36
|
-
Thread.current[:celluloid_actor_system] ||
|
36
|
+
Thread.current[:celluloid_actor_system] || raise(Error, "actor system not running")
|
37
37
|
else
|
38
|
-
Thread.current[:celluloid_actor_system] ||
|
38
|
+
Thread.current[:celluloid_actor_system] ||
|
39
|
+
@actor_system ||
|
40
|
+
raise(Error, "Celluloid is not yet started; use Celluloid.boot")
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
@@ -54,15 +56,23 @@ module Celluloid
|
|
54
56
|
klass.property :exclusive_actor, default: false
|
55
57
|
klass.property :exclusive_methods, multi: true
|
56
58
|
klass.property :execute_block_on_receiver,
|
57
|
-
default: [
|
59
|
+
default: %i[after every receive],
|
58
60
|
multi: true
|
59
61
|
|
60
62
|
klass.property :finalizer
|
61
63
|
klass.property :exit_handler_name
|
62
64
|
|
63
65
|
singleton = class << klass; self; end
|
64
|
-
|
65
|
-
|
66
|
+
begin
|
67
|
+
singleton.send(:remove_method, :trap_exit)
|
68
|
+
rescue
|
69
|
+
nil
|
70
|
+
end
|
71
|
+
begin
|
72
|
+
singleton.send(:remove_method, :exclusive)
|
73
|
+
rescue
|
74
|
+
nil
|
75
|
+
end
|
66
76
|
|
67
77
|
singleton.send(:define_method, :trap_exit) do |*args|
|
68
78
|
exit_handler_name(*args)
|
@@ -96,20 +106,20 @@ module Celluloid
|
|
96
106
|
def cores
|
97
107
|
Internals::CPUCounter.cores
|
98
108
|
end
|
99
|
-
|
100
|
-
|
109
|
+
alias cpus cores
|
110
|
+
alias ncpus cores
|
101
111
|
|
102
112
|
# Perform a stack dump of all actors to the given output object
|
103
113
|
def stack_dump(output = STDERR)
|
104
114
|
actor_system.stack_dump.print(output)
|
105
115
|
end
|
106
|
-
|
116
|
+
alias dump stack_dump
|
107
117
|
|
108
118
|
# Perform a stack summary of all actors to the given output object
|
109
119
|
def stack_summary(output = STDERR)
|
110
120
|
actor_system.stack_summary.print(output)
|
111
121
|
end
|
112
|
-
|
122
|
+
alias summarize stack_summary
|
113
123
|
|
114
124
|
def public_registry
|
115
125
|
actor_system.public_registry
|
@@ -148,7 +158,7 @@ module Celluloid
|
|
148
158
|
end
|
149
159
|
|
150
160
|
def init
|
151
|
-
@actor_system
|
161
|
+
@actor_system ||= Actor::System.new
|
152
162
|
end
|
153
163
|
|
154
164
|
def start
|
@@ -157,24 +167,16 @@ module Celluloid
|
|
157
167
|
|
158
168
|
def running?
|
159
169
|
actor_system && actor_system.running?
|
170
|
+
rescue Error
|
171
|
+
false
|
160
172
|
end
|
161
173
|
|
174
|
+
# de TODO Anticipate outside process finalizer that would by-pass this.
|
162
175
|
def register_shutdown
|
163
176
|
return if defined?(@shutdown_registered) && @shutdown_registered
|
164
|
-
|
165
|
-
# Terminate all actors at exit
|
177
|
+
# Terminate all actors at exit, unless the exit is abnormal.
|
166
178
|
at_exit do
|
167
|
-
|
168
|
-
# allows "reason" in exit_handler to resolve before being destroyed
|
169
|
-
if defined?(RUBY_ENGINE) && RUBY_ENGINE == "ruby" && RUBY_VERSION >= "1.9"
|
170
|
-
# workaround for MRI bug losing exit status in at_exit block
|
171
|
-
# http://bugs.ruby-lang.org/issues/5218
|
172
|
-
exit_status = $ERROR_INFO.status if $ERROR_INFO.is_a?(SystemExit)
|
173
|
-
Celluloid.shutdown
|
174
|
-
exit exit_status if exit_status
|
175
|
-
else
|
176
|
-
Celluloid.shutdown
|
177
|
-
end
|
179
|
+
Celluloid.shutdown unless $ERROR_INFO
|
178
180
|
end
|
179
181
|
@shutdown_registered = true
|
180
182
|
end
|
@@ -182,6 +184,7 @@ module Celluloid
|
|
182
184
|
# Shut down all running actors
|
183
185
|
def shutdown
|
184
186
|
actor_system.shutdown
|
187
|
+
@actor_system = nil
|
185
188
|
end
|
186
189
|
|
187
190
|
def version
|
@@ -196,18 +199,18 @@ module Celluloid
|
|
196
199
|
proxy._send_(:initialize, *args, &block)
|
197
200
|
proxy
|
198
201
|
end
|
199
|
-
|
202
|
+
alias spawn new
|
200
203
|
|
201
204
|
# Create a new actor and link to the current one
|
202
205
|
def new_link(*args, &block)
|
203
|
-
|
206
|
+
raise NotActorError, "can't link outside actor context" unless Celluloid.actor?
|
204
207
|
|
205
208
|
proxy = Cell.new(allocate, behavior_options, actor_options).proxy
|
206
209
|
Actor.link(proxy)
|
207
210
|
proxy._send_(:initialize, *args, &block)
|
208
211
|
proxy
|
209
212
|
end
|
210
|
-
|
213
|
+
alias spawn_link new_link
|
211
214
|
|
212
215
|
# Run an actor in the foreground
|
213
216
|
def run(*args, &block)
|
@@ -225,7 +228,7 @@ module Celluloid
|
|
225
228
|
mailbox_class: mailbox_class,
|
226
229
|
mailbox_size: mailbox_size,
|
227
230
|
task_class: task_class,
|
228
|
-
exclusive: exclusive_actor
|
231
|
+
exclusive: exclusive_actor
|
229
232
|
}
|
230
233
|
end
|
231
234
|
|
@@ -235,7 +238,7 @@ module Celluloid
|
|
235
238
|
exclusive_methods: exclusive_methods,
|
236
239
|
exit_handler_name: exit_handler_name,
|
237
240
|
finalizer: finalizer,
|
238
|
-
receiver_block_executions: execute_block_on_receiver
|
241
|
+
receiver_block_executions: execute_block_on_receiver
|
239
242
|
}
|
240
243
|
end
|
241
244
|
|
@@ -263,7 +266,7 @@ module Celluloid
|
|
263
266
|
def bare_object
|
264
267
|
self
|
265
268
|
end
|
266
|
-
|
269
|
+
alias wrapped_object bare_object
|
267
270
|
|
268
271
|
# Are we being invoked in a different thread from our owner?
|
269
272
|
def leaked?
|
@@ -279,18 +282,18 @@ module Celluloid
|
|
279
282
|
def registered_name
|
280
283
|
Actor.registered_name
|
281
284
|
end
|
282
|
-
|
285
|
+
alias name registered_name
|
283
286
|
|
284
287
|
def inspect
|
285
288
|
return "..." if Celluloid.detect_recursion
|
286
289
|
|
287
290
|
str = "#<"
|
288
291
|
|
289
|
-
if leaked?
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
292
|
+
str << if leaked?
|
293
|
+
Celluloid::BARE_OBJECT_WARNING_MESSAGE
|
294
|
+
else
|
295
|
+
"Celluloid::Proxy::Cell"
|
296
|
+
end
|
294
297
|
|
295
298
|
str << "(#{self.class}:0x#{object_id.to_s(16)})"
|
296
299
|
str << " " unless instance_variables.empty?
|
@@ -318,9 +321,10 @@ module Celluloid
|
|
318
321
|
cause = case cause
|
319
322
|
when String then RuntimeError.new(cause)
|
320
323
|
when Exception then cause
|
321
|
-
else
|
322
|
-
|
323
|
-
|
324
|
+
else raise TypeError, "Exception object/String expected, but #{cause.class} received"
|
325
|
+
end
|
326
|
+
|
327
|
+
raise AbortError, cause
|
324
328
|
end
|
325
329
|
|
326
330
|
# Terminate this actor
|
@@ -457,13 +461,15 @@ module Celluloid
|
|
457
461
|
end
|
458
462
|
end
|
459
463
|
|
460
|
-
if defined?(JRUBY_VERSION) && JRUBY_VERSION == "1.7.3"
|
461
|
-
fail "Celluloid is broken on JRuby 1.7.3. Please upgrade to 1.7.4+"
|
462
|
-
end
|
463
|
-
|
464
464
|
require "celluloid/exceptions"
|
465
465
|
|
466
|
-
Celluloid.logger = Logger.new(STDERR)
|
466
|
+
Celluloid.logger = Logger.new(STDERR).tap do |logger|
|
467
|
+
# !!! DO NOT INTRODUCE ADDITIONAL GLOBAL VARIABLES !!!
|
468
|
+
# rubocop:disable Style/GlobalVars
|
469
|
+
logger.level = Logger::INFO unless $CELLULOID_DEBUG
|
470
|
+
# rubocop:enable Style/GlobalVars
|
471
|
+
end
|
472
|
+
|
467
473
|
Celluloid.shutdown_timeout = 10
|
468
474
|
Celluloid.log_actor_crashes = true
|
469
475
|
|
@@ -480,8 +486,6 @@ require "celluloid/proxies"
|
|
480
486
|
require "celluloid/mailbox"
|
481
487
|
require "celluloid/mailbox/evented"
|
482
488
|
|
483
|
-
require "celluloid/essentials"
|
484
|
-
|
485
489
|
require "celluloid/group"
|
486
490
|
require "celluloid/group/spawner"
|
487
491
|
require "celluloid/group/pool" # TODO: Find way to only load this if being used.
|
@@ -494,13 +498,27 @@ require "celluloid/actor"
|
|
494
498
|
require "celluloid/cell"
|
495
499
|
require "celluloid/future"
|
496
500
|
|
501
|
+
require "celluloid/internals/call_chain"
|
502
|
+
require "celluloid/internals/cpu_counter"
|
503
|
+
require "celluloid/internals/handlers"
|
504
|
+
require "celluloid/internals/links"
|
505
|
+
require "celluloid/internals/logger"
|
506
|
+
require "celluloid/internals/method"
|
507
|
+
require "celluloid/internals/properties"
|
508
|
+
require "celluloid/internals/receivers"
|
509
|
+
require "celluloid/internals/registry"
|
510
|
+
require "celluloid/internals/responses"
|
511
|
+
require "celluloid/internals/signals"
|
512
|
+
require "celluloid/internals/stack"
|
513
|
+
require "celluloid/internals/task_set"
|
514
|
+
require "celluloid/internals/thread_handle"
|
515
|
+
require "celluloid/internals/uuid"
|
516
|
+
|
517
|
+
require "celluloid/notifications"
|
518
|
+
require "celluloid/supervision"
|
519
|
+
|
520
|
+
require "celluloid/logging"
|
497
521
|
require "celluloid/actor/system"
|
498
|
-
require "celluloid/actor/manager"
|
499
|
-
|
500
|
-
require "celluloid/deprecate" unless $CELLULOID_BACKPORTED == false
|
501
|
-
|
502
|
-
$CELLULOID_MONITORING = false
|
503
|
-
Celluloid::Notices.output
|
504
522
|
|
505
523
|
# Configure default systemwide settings
|
506
524
|
|
@@ -527,8 +545,3 @@ Celluloid.group_class =
|
|
527
545
|
Celluloid::Group.const_get(str)
|
528
546
|
end
|
529
547
|
end
|
530
|
-
|
531
|
-
unless defined?($CELLULOID_TEST) && $CELLULOID_TEST
|
532
|
-
Celluloid.register_shutdown
|
533
|
-
Celluloid.init
|
534
|
-
end
|