tribe 0.0.9 → 0.0.10
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/README.md +2 -2
- data/lib/tribe/actable.rb +13 -4
- data/lib/tribe/dedicated_actor.rb +2 -0
- data/lib/tribe/registry.rb +17 -12
- data/lib/tribe/version.rb +1 -1
- data/tribe.gemspec +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -36,13 +36,13 @@ Or install it yourself as:
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def exception_handler(e)
|
39
|
-
puts concat_e("MyActor (#{identifier}) died.", e)
|
40
39
|
super
|
40
|
+
puts concat_e("MyActor (#{identifier}) died.", e)
|
41
41
|
end
|
42
42
|
|
43
43
|
def shutdown_handler(event)
|
44
|
-
puts "MyActor (#{identifier}) is shutting down. Put cleanup code here."
|
45
44
|
super
|
45
|
+
puts "MyActor (#{identifier}) is shutting down. Put cleanup code here."
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
data/lib/tribe/actable.rb
CHANGED
@@ -42,17 +42,15 @@ module Tribe
|
|
42
42
|
while (event = @mailbox.shift)
|
43
43
|
case event.command
|
44
44
|
when :shutdown
|
45
|
+
cleanup
|
45
46
|
shutdown_handler(event)
|
46
|
-
@pool.shutdown if @dedicated
|
47
|
-
@mailbox.synchronize { @alive = false }
|
48
47
|
else
|
49
48
|
process_event(event)
|
50
49
|
end
|
51
50
|
end
|
52
51
|
|
53
52
|
rescue Exception => e
|
54
|
-
|
55
|
-
@pool.shutdown if @dedicated
|
53
|
+
cleanup
|
56
54
|
exception_handler(e)
|
57
55
|
ensure
|
58
56
|
@mailbox.release do
|
@@ -62,13 +60,24 @@ module Tribe
|
|
62
60
|
return nil
|
63
61
|
end
|
64
62
|
|
63
|
+
def cleanup
|
64
|
+
@pool.shutdown if @dedicated
|
65
|
+
@mailbox.synchronize { @alive = false }
|
66
|
+
@registry.unregister(self)
|
67
|
+
|
68
|
+
return nil
|
69
|
+
end
|
70
|
+
|
71
|
+
# Override and call super as necessary.
|
65
72
|
def process_event(event)
|
66
73
|
send("on_#{event.command}", event)
|
67
74
|
end
|
68
75
|
|
76
|
+
# Override and call super as necessary.
|
69
77
|
def exception_handler(e)
|
70
78
|
end
|
71
79
|
|
80
|
+
# Override and call super as necessary.
|
72
81
|
def shutdown_handler(event)
|
73
82
|
end
|
74
83
|
end
|
data/lib/tribe/registry.rb
CHANGED
@@ -3,30 +3,26 @@ module Tribe
|
|
3
3
|
def initialize
|
4
4
|
@mutex = Mutex.new
|
5
5
|
@actors_by_name = {}
|
6
|
+
@actors_by_oid = {}
|
6
7
|
end
|
7
8
|
|
8
9
|
def register(actor)
|
9
10
|
@mutex.synchronize do
|
10
|
-
|
11
|
+
raise("Actor already exists (#{actor.name}).") if @actors_by_name.key?(actor.name)
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
else
|
15
|
-
@actors_by_name[actor.name] = actor
|
16
|
-
end
|
13
|
+
@actors_by_name[actor.name] = actor if actor.name
|
14
|
+
@actors_by_oid[actor.object_id] = actor
|
17
15
|
|
18
|
-
return
|
16
|
+
return nil
|
19
17
|
end
|
20
18
|
end
|
21
19
|
|
22
20
|
def unregister(actor)
|
23
21
|
@mutex.synchronize do
|
24
|
-
|
25
|
-
|
22
|
+
@actors_by_name.delete(actor.name) if actor.name
|
23
|
+
@actors_by_oid.delete(actor.object_id)
|
26
24
|
|
27
|
-
|
28
|
-
|
29
|
-
return true
|
25
|
+
return nil
|
30
26
|
end
|
31
27
|
end
|
32
28
|
|
@@ -39,6 +35,15 @@ module Tribe
|
|
39
35
|
def dispose
|
40
36
|
@mutex.synchronize do
|
41
37
|
@actors_by_name.clear
|
38
|
+
@actors_by_oid.clear
|
39
|
+
|
40
|
+
return nil
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def inspect
|
45
|
+
@mutex.synchronize do
|
46
|
+
return "#<#{self.class.to_s}:0x#{(object_id << 1).to_s(16)} oid_count=#{@actors_by_oid.count}, named_count=#{@actors_by_name.count}>"
|
42
47
|
end
|
43
48
|
end
|
44
49
|
end
|
data/lib/tribe/version.rb
CHANGED
data/tribe.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tribe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.0.
|
21
|
+
version: 0.0.8
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.0.
|
29
|
+
version: 0.0.8
|
30
30
|
description: Tribe is a Ruby gem that implements event-driven actors.
|
31
31
|
email:
|
32
32
|
- chad@remesch.com
|