ntl-actor 0.3.1 → 0.4.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.
- checksums.yaml +4 -4
- data/lib/actor/actor.rb +7 -147
- data/lib/actor/address.rb +18 -0
- data/lib/actor/controls/actor.rb +27 -40
- data/lib/actor/controls/address.rb +48 -0
- data/lib/actor/controls/error.rb +17 -0
- data/lib/actor/controls/message/attribute.rb +17 -0
- data/lib/actor/controls/message.rb +23 -1
- data/lib/actor/controls/thread.rb +9 -0
- data/lib/actor/controls/uuid.rb +15 -0
- data/lib/actor/controls.rb +6 -10
- data/lib/actor/destructure.rb +23 -0
- data/lib/actor/{time_unit.rb → duration.rb} +1 -1
- data/lib/actor/messages.rb +15 -0
- data/lib/actor/messaging/message.rb +5 -0
- data/lib/actor/messaging/{writer → read}/substitute.rb +13 -10
- data/lib/actor/messaging/read.rb +50 -0
- data/lib/actor/messaging/write/substitute.rb +39 -0
- data/lib/actor/messaging/write.rb +26 -0
- data/lib/actor/module/build.rb +20 -0
- data/lib/actor/module/handle_macro.rb +39 -0
- data/lib/actor/module/start.rb +19 -0
- data/lib/actor/module.rb +73 -0
- data/lib/actor/router.rb +79 -0
- data/lib/actor/start.rb +46 -0
- data/lib/actor/stream.rb +36 -0
- data/lib/actor/substitutes/kernel.rb +23 -0
- data/lib/actor/substitutes/thread.rb +39 -0
- data/lib/actor/substitutes/thread_group.rb +26 -0
- data/lib/actor/supervisor.rb +46 -52
- data/lib/actor.rb +22 -14
- metadata +29 -29
- data/lib/actor/controls/statistics/elapsed_time/average.rb +0 -21
- data/lib/actor/controls/statistics/elapsed_time/maximum.rb +0 -21
- data/lib/actor/controls/statistics/elapsed_time/minimum.rb +0 -21
- data/lib/actor/controls/statistics/elapsed_time/standard_deviation.rb +0 -38
- data/lib/actor/controls/statistics/elapsed_time.rb +0 -15
- data/lib/actor/controls/statistics/timer.rb +0 -19
- data/lib/actor/controls/statistics.rb +0 -21
- data/lib/actor/controls/time/clock.rb +0 -31
- data/lib/actor/controls/time.rb +0 -24
- data/lib/actor/message.rb +0 -23
- data/lib/actor/messaging/address.rb +0 -40
- data/lib/actor/messaging/reader/substitute.rb +0 -40
- data/lib/actor/messaging/reader.rb +0 -31
- data/lib/actor/messaging/writer.rb +0 -26
- data/lib/actor/queue/assertions.rb +0 -13
- data/lib/actor/queue/reader.rb +0 -57
- data/lib/actor/queue.rb +0 -122
- data/lib/actor/statistics/copy.rb +0 -19
- data/lib/actor/statistics/timer.rb +0 -26
- data/lib/actor/statistics.rb +0 -75
- data/lib/actor/test_fixtures/parallel_iteration.rb +0 -143
- data/lib/actor/test_fixtures/sample_actor_status.rb +0 -45
- data/lib/actor/test_fixtures.rb +0 -4
@@ -0,0 +1,39 @@
|
|
1
|
+
module Actor
|
2
|
+
module Module
|
3
|
+
module HandleMacro
|
4
|
+
def handle_macro pattern, &action
|
5
|
+
method_name = MethodName.get pattern
|
6
|
+
|
7
|
+
define_method method_name, &action
|
8
|
+
end
|
9
|
+
alias_method :handle, :handle_macro
|
10
|
+
|
11
|
+
module MethodName
|
12
|
+
PATTERN = %r{(?:\A|[a-z0-9])[A-Z]}
|
13
|
+
|
14
|
+
def self.get message_pattern
|
15
|
+
case message_pattern
|
16
|
+
when Class, String then
|
17
|
+
message_name = message_pattern.to_s
|
18
|
+
|
19
|
+
*, message_name = message_name.split '::'
|
20
|
+
|
21
|
+
message_name.gsub! PATTERN do |str|
|
22
|
+
str.downcase!
|
23
|
+
str.insert 1, '_' if str.length == 2
|
24
|
+
str
|
25
|
+
end
|
26
|
+
|
27
|
+
get message_name.to_sym
|
28
|
+
|
29
|
+
when Symbol then
|
30
|
+
:"handle_#{message_pattern}"
|
31
|
+
|
32
|
+
else
|
33
|
+
get message_pattern.class
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Actor
|
2
|
+
module Module
|
3
|
+
module Start
|
4
|
+
def start *positional_arguments, address: nil, supervisor_address: nil, include: nil, **keyword_arguments, &block
|
5
|
+
address ||= Address.build
|
6
|
+
|
7
|
+
instance = build address, *positional_arguments, **keyword_arguments, &block
|
8
|
+
|
9
|
+
thread = Actor::Start.(
|
10
|
+
instance,
|
11
|
+
address,
|
12
|
+
supervisor_address: supervisor_address
|
13
|
+
)
|
14
|
+
|
15
|
+
Destructure.(address, include, { :thread => thread, :actor => instance })
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/actor/module.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
module Actor
|
2
|
+
module Module
|
3
|
+
def self.included cls
|
4
|
+
cls.class_exec do
|
5
|
+
extend Build
|
6
|
+
extend HandleMacro
|
7
|
+
extend Start
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
attr_writer :reader
|
12
|
+
attr_writer :writer
|
13
|
+
|
14
|
+
def configure
|
15
|
+
end
|
16
|
+
|
17
|
+
def continuations
|
18
|
+
@continuations ||= []
|
19
|
+
end
|
20
|
+
|
21
|
+
def handle message
|
22
|
+
method = handle? message
|
23
|
+
|
24
|
+
return if method.nil?
|
25
|
+
|
26
|
+
if method.arity == 0
|
27
|
+
method.()
|
28
|
+
else
|
29
|
+
method.(message)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def handle_stop
|
34
|
+
raise StopIteration
|
35
|
+
end
|
36
|
+
|
37
|
+
def handle? message
|
38
|
+
method_name = HandleMacro::MethodName.get message
|
39
|
+
|
40
|
+
if respond_to? method_name
|
41
|
+
method method_name
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def next
|
46
|
+
if continuations.empty?
|
47
|
+
message = reader.(wait: true)
|
48
|
+
else
|
49
|
+
message = reader.(wait: false)
|
50
|
+
message ||= continuations.shift
|
51
|
+
end
|
52
|
+
|
53
|
+
continuation_message = handle message
|
54
|
+
|
55
|
+
if continuation_message.is_a? Messaging::Message
|
56
|
+
continuations << continuation_message
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def run_loop
|
61
|
+
loop do self.next end
|
62
|
+
end
|
63
|
+
alias_method :start, :run_loop
|
64
|
+
|
65
|
+
def reader
|
66
|
+
@reader ||= Messaging::Read::Substitute.new
|
67
|
+
end
|
68
|
+
|
69
|
+
def writer
|
70
|
+
@writer ||= Messaging::Write::Substitute.new
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/lib/actor/router.rb
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
module Actor
|
2
|
+
class Router
|
3
|
+
include Actor
|
4
|
+
|
5
|
+
attr_writer :kernel
|
6
|
+
attr_reader :routes
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@routes = Hash.new do |hash, input|
|
10
|
+
hash[input] = Set.new
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
handle :start do
|
15
|
+
:continue
|
16
|
+
end
|
17
|
+
|
18
|
+
handle :continue do
|
19
|
+
routed_messages = false
|
20
|
+
|
21
|
+
routes.each do |input_reader, outputs|
|
22
|
+
msg = input_reader.(wait: false)
|
23
|
+
|
24
|
+
next unless msg
|
25
|
+
|
26
|
+
routed_messages = true
|
27
|
+
|
28
|
+
outputs.each do |output|
|
29
|
+
writer.(msg, output)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
unless routed_messages
|
34
|
+
kernel.sleep Duration.millisecond
|
35
|
+
end
|
36
|
+
|
37
|
+
:continue
|
38
|
+
end
|
39
|
+
|
40
|
+
handle :add_route do |message|
|
41
|
+
reader = message.reader
|
42
|
+
output_address = message.output_address
|
43
|
+
|
44
|
+
add reader, output_address
|
45
|
+
end
|
46
|
+
|
47
|
+
handle :remove_route do |message|
|
48
|
+
reader = message.reader
|
49
|
+
output_address = message.output_address
|
50
|
+
|
51
|
+
remove reader, output_address
|
52
|
+
end
|
53
|
+
|
54
|
+
def add reader, output_address
|
55
|
+
routes[reader] << output_address
|
56
|
+
end
|
57
|
+
|
58
|
+
def remove reader, output_address
|
59
|
+
routes[reader].delete output_address
|
60
|
+
end
|
61
|
+
|
62
|
+
def configure
|
63
|
+
self.kernel = Kernel
|
64
|
+
end
|
65
|
+
|
66
|
+
def kernel
|
67
|
+
@kernel ||= Substitutes::Kernel.new
|
68
|
+
end
|
69
|
+
|
70
|
+
AddRoute = Struct.new :reader, :output_address
|
71
|
+
RemoveRoute = Struct.new :reader, :output_address
|
72
|
+
|
73
|
+
module Assertions
|
74
|
+
def route? reader, output_address
|
75
|
+
routes[reader].include? output_address
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
data/lib/actor/start.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
module Actor
|
2
|
+
class Start
|
3
|
+
attr_writer :supervisor_address
|
4
|
+
attr_writer :thread
|
5
|
+
attr_writer :writer
|
6
|
+
|
7
|
+
def self.build supervisor_address: nil
|
8
|
+
instance = new
|
9
|
+
instance.supervisor_address = supervisor_address
|
10
|
+
instance.thread = Thread
|
11
|
+
Messaging::Write.configure instance
|
12
|
+
instance
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.call actor, address, supervisor_address: nil
|
16
|
+
instance = build supervisor_address: supervisor_address
|
17
|
+
instance.(actor, address)
|
18
|
+
end
|
19
|
+
|
20
|
+
def call actor, address
|
21
|
+
address ||= Address.build
|
22
|
+
|
23
|
+
start = Messages::Start.new
|
24
|
+
writer.(start, address)
|
25
|
+
|
26
|
+
actor_started = Messages::ActorStarted.new address
|
27
|
+
writer.(actor_started, supervisor_address)
|
28
|
+
|
29
|
+
self.thread.new do
|
30
|
+
actor.start
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def supervisor_address
|
35
|
+
@supervisor_address ||= Address::None
|
36
|
+
end
|
37
|
+
|
38
|
+
def thread
|
39
|
+
@thread ||= Substitutes::Thread
|
40
|
+
end
|
41
|
+
|
42
|
+
def writer
|
43
|
+
@writer ||= Messaging::Write::Substitute.new
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/actor/stream.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
module Actor
|
2
|
+
class Stream
|
3
|
+
attr_reader :queues
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@queues = Set.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def add_queue queue
|
10
|
+
queues << queue
|
11
|
+
end
|
12
|
+
|
13
|
+
def remove_queue queue
|
14
|
+
queues.delete queue
|
15
|
+
end
|
16
|
+
|
17
|
+
def write message
|
18
|
+
queues.each do |queue|
|
19
|
+
queue.enq message
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
module Null
|
24
|
+
extend self
|
25
|
+
|
26
|
+
def add_queue queue
|
27
|
+
end
|
28
|
+
|
29
|
+
def remove_queue queue
|
30
|
+
end
|
31
|
+
|
32
|
+
def write message
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Actor
|
2
|
+
module Substitutes
|
3
|
+
class Kernel
|
4
|
+
def initialize
|
5
|
+
@sleep_duration = nil
|
6
|
+
end
|
7
|
+
|
8
|
+
def sleep duration=nil
|
9
|
+
@sleep_duration = duration
|
10
|
+
end
|
11
|
+
|
12
|
+
module Assertions
|
13
|
+
def slept? duration=nil
|
14
|
+
if duration.nil?
|
15
|
+
@sleep_duration ? true : false
|
16
|
+
else
|
17
|
+
@sleep_duration == duration
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Actor
|
2
|
+
module Substitutes
|
3
|
+
class Thread
|
4
|
+
attr_reader :block
|
5
|
+
attr_accessor :name
|
6
|
+
attr_accessor :priority
|
7
|
+
attr_accessor :status
|
8
|
+
|
9
|
+
def initialize &block
|
10
|
+
@status = 'run'
|
11
|
+
@priority = 0
|
12
|
+
|
13
|
+
@block = block
|
14
|
+
end
|
15
|
+
|
16
|
+
def join limit=nil
|
17
|
+
if limit
|
18
|
+
begin
|
19
|
+
Timeout.timeout limit, &block
|
20
|
+
rescue Timeout::Error
|
21
|
+
return nil
|
22
|
+
end
|
23
|
+
else
|
24
|
+
block.()
|
25
|
+
end
|
26
|
+
|
27
|
+
self
|
28
|
+
end
|
29
|
+
|
30
|
+
def alive?
|
31
|
+
%w(sleep run).include? status
|
32
|
+
end
|
33
|
+
|
34
|
+
def stop?
|
35
|
+
status != 'run'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Actor
|
2
|
+
module Substitutes
|
3
|
+
class ThreadGroup
|
4
|
+
def initialize
|
5
|
+
@list = []
|
6
|
+
@enclosed = false
|
7
|
+
end
|
8
|
+
|
9
|
+
def add thread
|
10
|
+
@list << thread
|
11
|
+
end
|
12
|
+
|
13
|
+
def list
|
14
|
+
@list.dup
|
15
|
+
end
|
16
|
+
|
17
|
+
def enclose
|
18
|
+
@enclosed = true
|
19
|
+
end
|
20
|
+
|
21
|
+
def enclosed?
|
22
|
+
@enclosed
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/actor/supervisor.rb
CHANGED
@@ -1,81 +1,75 @@
|
|
1
1
|
module Actor
|
2
2
|
class Supervisor
|
3
|
-
|
4
|
-
attr_writer :exception_notifier
|
3
|
+
include Actor
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
def add address, thread
|
11
|
-
actor = Actor.new address, thread
|
12
|
-
|
13
|
-
actors << actor
|
5
|
+
attr_writer :broadcast_address
|
6
|
+
attr_accessor :error
|
7
|
+
attr_writer :thread_group
|
8
|
+
attr_writer :router_address
|
14
9
|
|
15
|
-
|
10
|
+
handle :start do
|
11
|
+
:continue
|
16
12
|
end
|
17
13
|
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
handle :continue do |message|
|
15
|
+
if actor_threads.empty?
|
16
|
+
:stop
|
17
|
+
else
|
18
|
+
message
|
21
19
|
end
|
22
20
|
end
|
23
21
|
|
24
|
-
|
25
|
-
|
22
|
+
handle :actor_started do |message|
|
23
|
+
reader = Messaging::Read.build broadcast_address
|
24
|
+
output_address = message.actor_address
|
26
25
|
|
27
|
-
|
28
|
-
Messaging::Writer.(message, address)
|
29
|
-
end
|
30
|
-
end
|
26
|
+
add_route = Router::AddRoute.new reader, output_address
|
31
27
|
|
32
|
-
|
33
|
-
broadcast Message::Pause.new
|
28
|
+
writer.(add_route, router_address)
|
34
29
|
end
|
35
30
|
|
36
|
-
|
37
|
-
|
38
|
-
end
|
31
|
+
handle :actor_crashed do |message|
|
32
|
+
self.error ||= message.error
|
39
33
|
|
40
|
-
|
41
|
-
broadcast Message::Stop.new
|
34
|
+
:shutdown
|
42
35
|
end
|
43
36
|
|
44
|
-
|
45
|
-
|
46
|
-
Signal.trap 'INT' do stop end
|
47
|
-
Signal.trap 'TSTP' do pause end
|
37
|
+
handle :shutdown do
|
38
|
+
stop = Messages::Stop.new
|
48
39
|
|
49
|
-
|
50
|
-
|
40
|
+
writer.(stop, broadcast_address)
|
41
|
+
writer.(stop, router_address)
|
51
42
|
|
52
|
-
|
53
|
-
|
54
|
-
thread.join TimeUnit.millisecond
|
55
|
-
end
|
43
|
+
:continue
|
44
|
+
end
|
56
45
|
|
57
|
-
|
46
|
+
def actor_threads
|
47
|
+
list = thread_group.list
|
48
|
+
list.delete Thread.current
|
49
|
+
list
|
50
|
+
end
|
58
51
|
|
59
|
-
|
60
|
-
|
52
|
+
def configure
|
53
|
+
thread_group = ThreadGroup.new
|
54
|
+
thread_group.add Thread.current
|
61
55
|
|
62
|
-
|
63
|
-
|
64
|
-
|
56
|
+
self.broadcast_address = Address.build
|
57
|
+
self.router_address = Router.start
|
58
|
+
self.thread_group = thread_group
|
65
59
|
end
|
66
60
|
|
67
|
-
def
|
68
|
-
@
|
61
|
+
def broadcast_address
|
62
|
+
@broadcast_address ||= Address::None
|
69
63
|
end
|
70
64
|
|
71
|
-
|
65
|
+
def router_address
|
66
|
+
@router_address ||= Address::None
|
67
|
+
end
|
72
68
|
|
73
|
-
|
74
|
-
|
75
|
-
actors.any? do |actor|
|
76
|
-
actor.address == actor_address
|
77
|
-
end
|
78
|
-
end
|
69
|
+
def thread_group
|
70
|
+
@thread_group ||= Substitutes::ThreadGroup.new
|
79
71
|
end
|
72
|
+
|
73
|
+
ActorCrashed = Struct.new :error
|
80
74
|
end
|
81
75
|
end
|
data/lib/actor.rb
CHANGED
@@ -1,24 +1,32 @@
|
|
1
|
-
require 'ostruct'
|
2
1
|
require 'securerandom'
|
3
2
|
require 'set'
|
3
|
+
require 'timeout'
|
4
4
|
|
5
|
-
require 'actor/
|
6
|
-
require 'actor/
|
7
|
-
require 'actor/
|
5
|
+
require 'actor/substitutes/kernel'
|
6
|
+
require 'actor/substitutes/thread_group'
|
7
|
+
require 'actor/substitutes/thread'
|
8
8
|
|
9
|
-
require 'actor/
|
10
|
-
require 'actor/
|
11
|
-
require 'actor/
|
9
|
+
require 'actor/destructure'
|
10
|
+
require 'actor/duration'
|
11
|
+
require 'actor/stream'
|
12
12
|
|
13
|
-
require 'actor/
|
14
|
-
require 'actor/messaging/
|
15
|
-
require 'actor/messaging/
|
16
|
-
require 'actor/messaging/
|
17
|
-
require 'actor/messaging/
|
13
|
+
require 'actor/address'
|
14
|
+
require 'actor/messaging/message'
|
15
|
+
require 'actor/messaging/read'
|
16
|
+
require 'actor/messaging/read/substitute'
|
17
|
+
require 'actor/messaging/write'
|
18
|
+
require 'actor/messaging/write/substitute'
|
18
19
|
|
19
|
-
require 'actor/
|
20
|
+
require 'actor/messages'
|
20
21
|
|
21
|
-
require 'actor/
|
22
|
+
require 'actor/module/build'
|
23
|
+
require 'actor/module/handle_macro'
|
24
|
+
require 'actor/module/start'
|
25
|
+
require 'actor/module'
|
26
|
+
|
27
|
+
require 'actor/start'
|
22
28
|
|
23
29
|
require 'actor/actor'
|
30
|
+
|
31
|
+
require 'actor/router'
|
24
32
|
require 'actor/supervisor'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ntl-actor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.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
|
+
date: 2016-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Implementation of actor pattern for ruby designed for simplicity and
|
14
14
|
frugality
|
@@ -19,35 +19,34 @@ extra_rdoc_files: []
|
|
19
19
|
files:
|
20
20
|
- lib/actor.rb
|
21
21
|
- lib/actor/actor.rb
|
22
|
+
- lib/actor/address.rb
|
22
23
|
- lib/actor/controls.rb
|
23
24
|
- lib/actor/controls/actor.rb
|
25
|
+
- lib/actor/controls/address.rb
|
26
|
+
- lib/actor/controls/error.rb
|
24
27
|
- lib/actor/controls/message.rb
|
25
|
-
- lib/actor/controls/
|
26
|
-
- lib/actor/controls/
|
27
|
-
- lib/actor/controls/
|
28
|
-
- lib/actor/
|
29
|
-
- lib/actor/
|
30
|
-
- lib/actor/
|
31
|
-
- lib/actor/
|
32
|
-
- lib/actor/
|
33
|
-
- lib/actor/
|
34
|
-
- lib/actor/
|
35
|
-
- lib/actor/messaging/
|
36
|
-
- lib/actor/
|
37
|
-
- lib/actor/
|
38
|
-
- lib/actor/
|
39
|
-
- lib/actor/
|
40
|
-
- lib/actor/
|
41
|
-
- lib/actor/
|
42
|
-
- lib/actor/
|
43
|
-
- lib/actor/
|
44
|
-
- lib/actor/
|
45
|
-
- lib/actor/
|
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/messages.rb
|
34
|
+
- lib/actor/messaging/message.rb
|
35
|
+
- lib/actor/messaging/read.rb
|
36
|
+
- lib/actor/messaging/read/substitute.rb
|
37
|
+
- lib/actor/messaging/write.rb
|
38
|
+
- lib/actor/messaging/write/substitute.rb
|
39
|
+
- lib/actor/module.rb
|
40
|
+
- lib/actor/module/build.rb
|
41
|
+
- lib/actor/module/handle_macro.rb
|
42
|
+
- lib/actor/module/start.rb
|
43
|
+
- lib/actor/router.rb
|
44
|
+
- lib/actor/start.rb
|
45
|
+
- lib/actor/stream.rb
|
46
|
+
- lib/actor/substitutes/kernel.rb
|
47
|
+
- lib/actor/substitutes/thread.rb
|
48
|
+
- lib/actor/substitutes/thread_group.rb
|
46
49
|
- lib/actor/supervisor.rb
|
47
|
-
- lib/actor/test_fixtures.rb
|
48
|
-
- lib/actor/test_fixtures/parallel_iteration.rb
|
49
|
-
- lib/actor/test_fixtures/sample_actor_status.rb
|
50
|
-
- lib/actor/time_unit.rb
|
51
50
|
homepage: https://github.com/ntl/actor
|
52
51
|
licenses:
|
53
52
|
- MIT
|
@@ -56,6 +55,7 @@ post_install_message:
|
|
56
55
|
rdoc_options: []
|
57
56
|
require_paths:
|
58
57
|
- lib
|
58
|
+
- src
|
59
59
|
required_ruby_version: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - ">="
|
@@ -63,9 +63,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
63
63
|
version: '0'
|
64
64
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 1.3.1
|
69
69
|
requirements: []
|
70
70
|
rubyforge_project:
|
71
71
|
rubygems_version: 2.6.6
|
@@ -1,21 +0,0 @@
|
|
1
|
-
module Actor
|
2
|
-
module Controls
|
3
|
-
module Statistics
|
4
|
-
module ElapsedTime
|
5
|
-
module Average
|
6
|
-
def self.configure_timer receiver
|
7
|
-
ElapsedTime.configure_timer receiver, elapsed_times
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.elapsed_times
|
11
|
-
[1, 2, 6]
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.value
|
15
|
-
3
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|