ntl-actor 0.6.2 → 1.0.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/actor.rb +45 -19
- data/lib/actor/actor.rb +12 -132
- data/lib/actor/build.rb +36 -0
- data/lib/actor/controls.rb +7 -7
- data/lib/actor/messages.rb +20 -4
- data/lib/actor/messaging/address.rb +26 -0
- data/lib/actor/messaging/address/controls.rb +11 -0
- data/lib/actor/messaging/address/dependency.rb +13 -0
- data/lib/actor/messaging/address/none.rb +33 -0
- data/lib/actor/messaging/message.rb +39 -1
- data/lib/actor/messaging/message/name.rb +33 -0
- data/lib/actor/messaging/publisher.rb +39 -0
- data/lib/actor/messaging/publisher/assertions.rb +11 -0
- data/lib/actor/messaging/publisher/dependency.rb +13 -0
- data/lib/actor/messaging/publisher/substitute.rb +62 -0
- data/lib/actor/messaging/queue.rb +21 -0
- data/lib/actor/messaging/queue/substitute.rb +53 -0
- data/lib/actor/messaging/reader.rb +32 -0
- data/lib/actor/messaging/reader/assertions.rb +25 -0
- data/lib/actor/messaging/reader/dependency.rb +13 -0
- data/lib/actor/messaging/reader/substitute.rb +31 -0
- data/lib/actor/messaging/writer.rb +28 -0
- data/lib/actor/messaging/writer/dependency.rb +13 -0
- data/lib/actor/messaging/writer/substitute.rb +45 -0
- data/lib/actor/module/dependencies.rb +30 -0
- data/lib/actor/module/dependencies/assertions.rb +23 -0
- data/lib/actor/module/handler.rb +31 -0
- data/lib/actor/module/handler/macro.rb +13 -0
- data/lib/actor/module/handler/method_name.rb +13 -0
- data/lib/actor/module/include_assertions.rb +18 -0
- data/lib/actor/module/run_loop.rb +19 -0
- data/lib/actor/module/start.rb +27 -0
- data/lib/actor/module/suspend_resume.rb +36 -0
- data/lib/actor/module/suspend_resume/assertions.rb +26 -0
- data/lib/actor/module/suspend_resume/configure.rb +13 -0
- data/lib/actor/module/suspend_resume/controls.rb +17 -0
- data/lib/actor/module/suspend_resume/handle.rb +17 -0
- data/lib/actor/module/suspend_resume/initialize.rb +13 -0
- data/lib/actor/start.rb +34 -34
- data/lib/actor/supervisor.rb +60 -71
- data/lib/actor/supervisor/address/get.rb +15 -0
- data/lib/actor/supervisor/address/put.rb +13 -0
- data/lib/actor/supervisor/address/registry.rb +7 -0
- data/lib/actor/supervisor/assertions.rb +20 -0
- metadata +42 -28
- data/lib/actor/address.rb +0 -18
- data/lib/actor/controls/actor.rb +0 -89
- data/lib/actor/controls/address.rb +0 -48
- data/lib/actor/controls/error.rb +0 -11
- data/lib/actor/controls/message.rb +0 -39
- data/lib/actor/controls/message/attribute.rb +0 -17
- data/lib/actor/controls/thread.rb +0 -9
- data/lib/actor/controls/uuid.rb +0 -15
- data/lib/actor/destructure.rb +0 -23
- data/lib/actor/duration.rb +0 -7
- data/lib/actor/future.rb +0 -38
- data/lib/actor/handle_macro.rb +0 -37
- data/lib/actor/messaging/read.rb +0 -54
- data/lib/actor/messaging/read/substitute.rb +0 -33
- data/lib/actor/messaging/write.rb +0 -26
- data/lib/actor/messaging/write/substitute.rb +0 -39
- data/lib/actor/observers.rb +0 -45
- data/lib/actor/router.rb +0 -94
- data/lib/actor/stream.rb +0 -36
- data/lib/actor/substitutes/kernel.rb +0 -23
- data/lib/actor/substitutes/thread.rb +0 -39
- data/lib/actor/substitutes/thread_group.rb +0 -26
@@ -0,0 +1,20 @@
|
|
1
|
+
module Actor
|
2
|
+
class Supervisor
|
3
|
+
module Assertions
|
4
|
+
def self.extended supervisor
|
5
|
+
supervisor.instance_exec do
|
6
|
+
assertions_module = publisher.class::Assertions
|
7
|
+
publisher.extend assertions_module
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def registered_actor? actor
|
12
|
+
publisher.registered? actor.address
|
13
|
+
end
|
14
|
+
|
15
|
+
def unregistered_actor? actor
|
16
|
+
publisher.unregistered? actor.address
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
metadata
CHANGED
@@ -1,17 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ntl-actor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.pre1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Ladd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-15 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: Implementation of actor pattern for ruby
|
14
|
-
frugality
|
13
|
+
description: Implementation of actor pattern for ruby
|
15
14
|
email: nathanladd+github@gmail.com
|
16
15
|
executables: []
|
17
16
|
extensions: []
|
@@ -19,33 +18,48 @@ extra_rdoc_files: []
|
|
19
18
|
files:
|
20
19
|
- lib/actor.rb
|
21
20
|
- lib/actor/actor.rb
|
22
|
-
- lib/actor/
|
21
|
+
- lib/actor/build.rb
|
23
22
|
- lib/actor/controls.rb
|
24
|
-
- lib/actor/controls/actor.rb
|
25
|
-
- lib/actor/controls/address.rb
|
26
|
-
- lib/actor/controls/error.rb
|
27
|
-
- lib/actor/controls/message.rb
|
28
|
-
- lib/actor/controls/message/attribute.rb
|
29
|
-
- lib/actor/controls/thread.rb
|
30
|
-
- lib/actor/controls/uuid.rb
|
31
|
-
- lib/actor/destructure.rb
|
32
|
-
- lib/actor/duration.rb
|
33
|
-
- lib/actor/future.rb
|
34
|
-
- lib/actor/handle_macro.rb
|
35
23
|
- lib/actor/messages.rb
|
24
|
+
- lib/actor/messaging/address.rb
|
25
|
+
- lib/actor/messaging/address/controls.rb
|
26
|
+
- lib/actor/messaging/address/dependency.rb
|
27
|
+
- lib/actor/messaging/address/none.rb
|
36
28
|
- lib/actor/messaging/message.rb
|
37
|
-
- lib/actor/messaging/
|
38
|
-
- lib/actor/messaging/
|
39
|
-
- lib/actor/messaging/
|
40
|
-
- lib/actor/messaging/
|
41
|
-
- lib/actor/
|
42
|
-
- lib/actor/
|
29
|
+
- lib/actor/messaging/message/name.rb
|
30
|
+
- lib/actor/messaging/publisher.rb
|
31
|
+
- lib/actor/messaging/publisher/assertions.rb
|
32
|
+
- lib/actor/messaging/publisher/dependency.rb
|
33
|
+
- lib/actor/messaging/publisher/substitute.rb
|
34
|
+
- lib/actor/messaging/queue.rb
|
35
|
+
- lib/actor/messaging/queue/substitute.rb
|
36
|
+
- lib/actor/messaging/reader.rb
|
37
|
+
- lib/actor/messaging/reader/assertions.rb
|
38
|
+
- lib/actor/messaging/reader/dependency.rb
|
39
|
+
- lib/actor/messaging/reader/substitute.rb
|
40
|
+
- lib/actor/messaging/writer.rb
|
41
|
+
- lib/actor/messaging/writer/dependency.rb
|
42
|
+
- lib/actor/messaging/writer/substitute.rb
|
43
|
+
- lib/actor/module/dependencies.rb
|
44
|
+
- lib/actor/module/dependencies/assertions.rb
|
45
|
+
- lib/actor/module/handler.rb
|
46
|
+
- lib/actor/module/handler/macro.rb
|
47
|
+
- lib/actor/module/handler/method_name.rb
|
48
|
+
- lib/actor/module/include_assertions.rb
|
49
|
+
- lib/actor/module/run_loop.rb
|
50
|
+
- lib/actor/module/start.rb
|
51
|
+
- lib/actor/module/suspend_resume.rb
|
52
|
+
- lib/actor/module/suspend_resume/assertions.rb
|
53
|
+
- lib/actor/module/suspend_resume/configure.rb
|
54
|
+
- lib/actor/module/suspend_resume/controls.rb
|
55
|
+
- lib/actor/module/suspend_resume/handle.rb
|
56
|
+
- lib/actor/module/suspend_resume/initialize.rb
|
43
57
|
- lib/actor/start.rb
|
44
|
-
- lib/actor/stream.rb
|
45
|
-
- lib/actor/substitutes/kernel.rb
|
46
|
-
- lib/actor/substitutes/thread.rb
|
47
|
-
- lib/actor/substitutes/thread_group.rb
|
48
58
|
- lib/actor/supervisor.rb
|
59
|
+
- lib/actor/supervisor/address/get.rb
|
60
|
+
- lib/actor/supervisor/address/put.rb
|
61
|
+
- lib/actor/supervisor/address/registry.rb
|
62
|
+
- lib/actor/supervisor/assertions.rb
|
49
63
|
homepage: https://github.com/ntl/actor
|
50
64
|
licenses:
|
51
65
|
- MIT
|
@@ -62,9 +76,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
62
76
|
version: '0'
|
63
77
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
78
|
requirements:
|
65
|
-
- - "
|
79
|
+
- - ">"
|
66
80
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
81
|
+
version: 1.3.1
|
68
82
|
requirements: []
|
69
83
|
rubyforge_project:
|
70
84
|
rubygems_version: 2.6.6
|
data/lib/actor/address.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
module Actor
|
2
|
-
Address = Struct.new :stream, :uuid do
|
3
|
-
def self.build stream=nil
|
4
|
-
stream ||= Stream.new
|
5
|
-
|
6
|
-
uuid = SecureRandom.uuid
|
7
|
-
|
8
|
-
instance = new stream, uuid
|
9
|
-
instance
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
class Address
|
14
|
-
NoneClass = Class.new Address
|
15
|
-
|
16
|
-
None = NoneClass.new Stream::Null, 'no-stream'
|
17
|
-
end
|
18
|
-
end
|
data/lib/actor/controls/actor.rb
DELETED
@@ -1,89 +0,0 @@
|
|
1
|
-
module Actor
|
2
|
-
module Controls
|
3
|
-
module Actor
|
4
|
-
def self.example
|
5
|
-
Example.new
|
6
|
-
end
|
7
|
-
|
8
|
-
class Example
|
9
|
-
include ::Actor
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
@messages = []
|
13
|
-
end
|
14
|
-
|
15
|
-
handle Message::Example do |message|
|
16
|
-
@messages << message
|
17
|
-
nil
|
18
|
-
end
|
19
|
-
|
20
|
-
def handled? message
|
21
|
-
@messages.include? message
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
class Continues
|
26
|
-
include ::Actor
|
27
|
-
|
28
|
-
def handle message
|
29
|
-
if message == Message.example
|
30
|
-
Message::Other.example
|
31
|
-
else
|
32
|
-
Message.example
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
handle Message::Example do
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
class Stops
|
41
|
-
include ::Actor
|
42
|
-
|
43
|
-
def self.example
|
44
|
-
instance = new
|
45
|
-
instance.reader.add_message Messages::Start.new
|
46
|
-
instance
|
47
|
-
end
|
48
|
-
|
49
|
-
handle :start do
|
50
|
-
@stopped = true
|
51
|
-
|
52
|
-
raise StopIteration
|
53
|
-
end
|
54
|
-
|
55
|
-
def stopped?
|
56
|
-
@stopped ? true : false
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
class Crashes
|
61
|
-
include ::Actor
|
62
|
-
|
63
|
-
def self.example
|
64
|
-
instance = new
|
65
|
-
instance.reader.add_message Messages::Start.new
|
66
|
-
instance
|
67
|
-
end
|
68
|
-
|
69
|
-
handle :start do
|
70
|
-
raise error
|
71
|
-
end
|
72
|
-
|
73
|
-
def error
|
74
|
-
@error ||= Error.example
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
class Singleton
|
79
|
-
include ::Actor
|
80
|
-
|
81
|
-
def self.define &block
|
82
|
-
cls = Class.new Singleton
|
83
|
-
cls.class_exec &block if block
|
84
|
-
cls.new
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module Actor
|
2
|
-
module Controls
|
3
|
-
module Address
|
4
|
-
def self.example id_offset=nil, stream: nil
|
5
|
-
stream ||= Stream.new
|
6
|
-
|
7
|
-
uuid = UUID.example id_offset
|
8
|
-
|
9
|
-
::Actor::Address.new stream, uuid
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.pair id_offset=nil
|
13
|
-
stream = Stream.new
|
14
|
-
|
15
|
-
queue = Queue.new
|
16
|
-
stream.add_queue queue
|
17
|
-
|
18
|
-
address = example id_offset, stream: stream
|
19
|
-
|
20
|
-
return address, queue
|
21
|
-
end
|
22
|
-
|
23
|
-
module Actor
|
24
|
-
def self.example
|
25
|
-
Address.example 0
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
module Supervisor
|
30
|
-
def self.example
|
31
|
-
Address.example 1
|
32
|
-
end
|
33
|
-
|
34
|
-
module Broadcast
|
35
|
-
def self.example
|
36
|
-
Address.example 2
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
module Router
|
42
|
-
def self.example
|
43
|
-
Address.example 3
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
data/lib/actor/controls/error.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
module Actor
|
2
|
-
module Controls
|
3
|
-
module Message
|
4
|
-
def self.example
|
5
|
-
attribute = Attribute.example
|
6
|
-
|
7
|
-
Example.new attribute
|
8
|
-
end
|
9
|
-
|
10
|
-
module Other
|
11
|
-
def self.example
|
12
|
-
attribute = Attribute::Other.example
|
13
|
-
|
14
|
-
Example.new attribute
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
Example = Struct.new :some_attribute do
|
19
|
-
include Messaging::Message
|
20
|
-
end
|
21
|
-
|
22
|
-
module ActorStarted
|
23
|
-
def self.example
|
24
|
-
actor_address = Address::Actor.example
|
25
|
-
|
26
|
-
Messages::ActorStarted.new actor_address
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
module ActorCrashed
|
31
|
-
def self.example error=nil
|
32
|
-
error ||= Error.example
|
33
|
-
|
34
|
-
Messages::ActorCrashed.new error
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
data/lib/actor/controls/uuid.rb
DELETED
data/lib/actor/destructure.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Actor
|
2
|
-
module Destructure
|
3
|
-
def self.call primary_return_value, include=nil, **values
|
4
|
-
include = Array(include)
|
5
|
-
|
6
|
-
if include.empty?
|
7
|
-
primary_return_value
|
8
|
-
else
|
9
|
-
return_values = include.map do |return_value_name|
|
10
|
-
begin
|
11
|
-
values.fetch return_value_name
|
12
|
-
rescue KeyError
|
13
|
-
raise Error, "Invalid return value to include `#{return_value_name.inspect}'"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
return primary_return_value, *return_values
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
Error = Class.new StandardError
|
22
|
-
end
|
23
|
-
end
|