ntl-actor 0.6.2 → 1.0.0.pre1

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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/lib/actor.rb +45 -19
  3. data/lib/actor/actor.rb +12 -132
  4. data/lib/actor/build.rb +36 -0
  5. data/lib/actor/controls.rb +7 -7
  6. data/lib/actor/messages.rb +20 -4
  7. data/lib/actor/messaging/address.rb +26 -0
  8. data/lib/actor/messaging/address/controls.rb +11 -0
  9. data/lib/actor/messaging/address/dependency.rb +13 -0
  10. data/lib/actor/messaging/address/none.rb +33 -0
  11. data/lib/actor/messaging/message.rb +39 -1
  12. data/lib/actor/messaging/message/name.rb +33 -0
  13. data/lib/actor/messaging/publisher.rb +39 -0
  14. data/lib/actor/messaging/publisher/assertions.rb +11 -0
  15. data/lib/actor/messaging/publisher/dependency.rb +13 -0
  16. data/lib/actor/messaging/publisher/substitute.rb +62 -0
  17. data/lib/actor/messaging/queue.rb +21 -0
  18. data/lib/actor/messaging/queue/substitute.rb +53 -0
  19. data/lib/actor/messaging/reader.rb +32 -0
  20. data/lib/actor/messaging/reader/assertions.rb +25 -0
  21. data/lib/actor/messaging/reader/dependency.rb +13 -0
  22. data/lib/actor/messaging/reader/substitute.rb +31 -0
  23. data/lib/actor/messaging/writer.rb +28 -0
  24. data/lib/actor/messaging/writer/dependency.rb +13 -0
  25. data/lib/actor/messaging/writer/substitute.rb +45 -0
  26. data/lib/actor/module/dependencies.rb +30 -0
  27. data/lib/actor/module/dependencies/assertions.rb +23 -0
  28. data/lib/actor/module/handler.rb +31 -0
  29. data/lib/actor/module/handler/macro.rb +13 -0
  30. data/lib/actor/module/handler/method_name.rb +13 -0
  31. data/lib/actor/module/include_assertions.rb +18 -0
  32. data/lib/actor/module/run_loop.rb +19 -0
  33. data/lib/actor/module/start.rb +27 -0
  34. data/lib/actor/module/suspend_resume.rb +36 -0
  35. data/lib/actor/module/suspend_resume/assertions.rb +26 -0
  36. data/lib/actor/module/suspend_resume/configure.rb +13 -0
  37. data/lib/actor/module/suspend_resume/controls.rb +17 -0
  38. data/lib/actor/module/suspend_resume/handle.rb +17 -0
  39. data/lib/actor/module/suspend_resume/initialize.rb +13 -0
  40. data/lib/actor/start.rb +34 -34
  41. data/lib/actor/supervisor.rb +60 -71
  42. data/lib/actor/supervisor/address/get.rb +15 -0
  43. data/lib/actor/supervisor/address/put.rb +13 -0
  44. data/lib/actor/supervisor/address/registry.rb +7 -0
  45. data/lib/actor/supervisor/assertions.rb +20 -0
  46. metadata +42 -28
  47. data/lib/actor/address.rb +0 -18
  48. data/lib/actor/controls/actor.rb +0 -89
  49. data/lib/actor/controls/address.rb +0 -48
  50. data/lib/actor/controls/error.rb +0 -11
  51. data/lib/actor/controls/message.rb +0 -39
  52. data/lib/actor/controls/message/attribute.rb +0 -17
  53. data/lib/actor/controls/thread.rb +0 -9
  54. data/lib/actor/controls/uuid.rb +0 -15
  55. data/lib/actor/destructure.rb +0 -23
  56. data/lib/actor/duration.rb +0 -7
  57. data/lib/actor/future.rb +0 -38
  58. data/lib/actor/handle_macro.rb +0 -37
  59. data/lib/actor/messaging/read.rb +0 -54
  60. data/lib/actor/messaging/read/substitute.rb +0 -33
  61. data/lib/actor/messaging/write.rb +0 -26
  62. data/lib/actor/messaging/write/substitute.rb +0 -39
  63. data/lib/actor/observers.rb +0 -45
  64. data/lib/actor/router.rb +0 -94
  65. data/lib/actor/stream.rb +0 -36
  66. data/lib/actor/substitutes/kernel.rb +0 -23
  67. data/lib/actor/substitutes/thread.rb +0 -39
  68. data/lib/actor/substitutes/thread_group.rb +0 -26
@@ -0,0 +1,15 @@
1
+ module Actor
2
+ class Supervisor
3
+ module Address
4
+ module Get
5
+ def self.call thread_group=nil
6
+ thread_group ||= Thread.current.group
7
+
8
+ Registry.fetch thread_group do
9
+ Messaging::Address::None.instance
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ module Actor
2
+ class Supervisor
3
+ module Address
4
+ module Put
5
+ def self.call address
6
+ thread_group = Thread.current.group
7
+
8
+ Registry[thread_group] = address
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ module Actor
2
+ class Supervisor
3
+ module Address
4
+ Registry = Hash.new
5
+ end
6
+ end
7
+ end
@@ -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.6.2
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-01 00:00:00.000000000 Z
11
+ date: 2016-11-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Implementation of actor pattern for ruby designed for simplicity and
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/address.rb
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/read.rb
38
- - lib/actor/messaging/read/substitute.rb
39
- - lib/actor/messaging/write.rb
40
- - lib/actor/messaging/write/substitute.rb
41
- - lib/actor/observers.rb
42
- - lib/actor/router.rb
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: '0'
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
@@ -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
@@ -1,11 +0,0 @@
1
- module Actor
2
- module Controls
3
- module Error
4
- def self.example
5
- Example.new
6
- end
7
-
8
- Example = Class.new StandardError
9
- end
10
- end
11
- end
@@ -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
@@ -1,17 +0,0 @@
1
- module Actor
2
- module Controls
3
- module Message
4
- module Attribute
5
- def self.example
6
- 'some-attribute'
7
- end
8
-
9
- module Other
10
- def self.example
11
- 'other-attribute'
12
- end
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,9 +0,0 @@
1
- module Actor
2
- module Controls
3
- module Thread
4
- def self.example
5
- Substitutes::Thread.new
6
- end
7
- end
8
- end
9
- end
@@ -1,15 +0,0 @@
1
- module Actor
2
- module Controls
3
- module UUID
4
- def self.example id_offset=nil
5
- id_offset ||= 0
6
-
7
- id_offset = id_offset.to_s 16
8
-
9
- dword = id_offset.rjust 8, '0'
10
-
11
- "#{dword}-0000-4000-8000-000000000000"
12
- end
13
- end
14
- end
15
- end
@@ -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