evt-consumer 0.4.0.2 → 0.4.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fb8a3d8ef3f63812e905fafe70844fe8ebbdff63
4
- data.tar.gz: f0275972572b727a976f873ab60cbeed85b257e0
3
+ metadata.gz: c2fdb752c2c2e6a472a1d8f5e366fc547b43c2d8
4
+ data.tar.gz: 30085cfb53accfc5ddbe2bbfc07b6f291f0bc7fe
5
5
  SHA512:
6
- metadata.gz: d5994f23f85aa8f4f05fdc3aa5656a6b8d062563005d0644f0e542f52e805fbe2b1d4fcf81c3f781571795babd32d0001b35a56a7303f6e74e5d5aadc0a5587b
7
- data.tar.gz: f858a1b50eaf238101748fb64fa4c9ceff6961080abefed8eef8f73e18024df4bfc8838cbffcd18f6d3e6ec21eb099f8924fd7a50a4b9632b48c485751741366
6
+ metadata.gz: d93e4722ed90c52ae5b7abc8fd97396e76255033aeb938a12145a0757da77aa6e01cab4681bed5d8bacad5acbd9ac0d4c2e11530a21ba4eba30770db32781547
7
+ data.tar.gz: f11d4e31aeeeb527621e55463dfcd0693789d41aef69c3af8bf1d5b73680e6dbeefa0084c9228e1dc7c92e837606aee7a76a0775a4a2ce0f8f569390bf1915c9
@@ -11,7 +11,7 @@ module Consumer
11
11
 
12
12
  prepend Configure
13
13
 
14
- initializer :stream
14
+ initializer :stream_name
15
15
 
16
16
  attr_writer :position_update_interval
17
17
  def position_update_interval
@@ -42,6 +42,46 @@ module Consumer
42
42
  error_raised error, event_data
43
43
  end
44
44
 
45
+ def run(&probe)
46
+ threads, addresses = nil
47
+
48
+ start do |_, _threads, _addresses|
49
+ threads = _threads
50
+ addresses = _addresses
51
+ end
52
+
53
+ loop do
54
+ probe.(self, threads, addresses) if probe
55
+ consumer.subscription.cycle { nil }
56
+ end
57
+
58
+ addresses.each do |address|
59
+ Actor::Messaging::Send.(:stop, address)
60
+ end
61
+
62
+ threads.each &:join
63
+
64
+ AsyncInvocation::Incorrect
65
+ end
66
+
67
+ def start(&probe)
68
+ _, subscription_thread = ::Actor::Start.(subscription)
69
+
70
+ actor_address, actor_thread = Actor.start self, subscription, include: :thread
71
+
72
+ if probe
73
+ subscription_address = subscription.address
74
+
75
+ probe.(self, [actor_thread, subscription_thread], [actor_address, subscription_address])
76
+ end
77
+
78
+ AsyncInvocation::Incorrect
79
+ end
80
+
81
+ def add_handler(handler)
82
+ dispatch.add_handler handler
83
+ end
84
+
45
85
  def error_raised(error, _)
46
86
  raise error
47
87
  end
@@ -78,7 +118,7 @@ module Consumer
78
118
 
79
119
  subscription = Subscription.configure(
80
120
  self,
81
- stream,
121
+ stream_name,
82
122
  get,
83
123
  position: starting_position,
84
124
  cycle_maximum_milliseconds: cycle_maximum_milliseconds,
@@ -95,9 +135,7 @@ module Consumer
95
135
 
96
136
  module Build
97
137
  def build(stream_name, batch_size: nil, position_store: nil, position_update_interval: nil, session: nil, cycle_timeout_milliseconds: nil, cycle_maximum_milliseconds: nil)
98
- stream = EventSource::Stream.build stream_name
99
-
100
- instance = new stream
138
+ instance = new stream_name
101
139
  instance.position_update_interval = position_update_interval
102
140
  instance.cycle_maximum_milliseconds = cycle_maximum_milliseconds
103
141
  instance.cycle_timeout_milliseconds = cycle_timeout_milliseconds
@@ -107,45 +145,16 @@ module Consumer
107
145
  end
108
146
 
109
147
  module Run
110
- def run(stream_name, **arguments, &action)
111
- consumer, threads, addresses = nil
112
-
113
- return_value = start stream_name, **arguments do |_consumer, _threads, _addresses|
114
- consumer = _consumer
115
- threads = _threads
116
- addresses = _addresses
117
- end
118
-
119
- loop do
120
- action.(consumer, threads, addresses) if action
121
- consumer.subscription.cycle { nil }
122
- end
123
-
124
- addresses.each do |address|
125
- Actor::Messaging::Send.(:stop, address)
126
- end
127
-
128
- threads.each &:join
129
-
130
- return_value
148
+ def run(stream_name, **arguments, &probe)
149
+ instance = build stream_name, **arguments
150
+ instance.run &probe
131
151
  end
132
152
  end
133
153
 
134
154
  module Start
135
155
  def start(stream_name, **arguments, &probe)
136
156
  instance = build stream_name, **arguments
137
-
138
- _, subscription_thread = ::Actor::Start.(instance.subscription)
139
-
140
- actor_address, actor_thread = Actor.start instance, instance.subscription, include: :thread
141
-
142
- if probe
143
- subscription_address = instance.subscription.address
144
-
145
- probe.(instance, [actor_thread, subscription_thread], [actor_address, subscription_address])
146
- end
147
-
148
- AsyncInvocation::Incorrect
157
+ instance.start &probe
149
158
  end
150
159
  end
151
160
 
@@ -10,7 +10,6 @@ require 'consumer/controls/get/incrementing'
10
10
  require 'consumer/controls/handle'
11
11
  require 'consumer/controls/id'
12
12
  require 'consumer/controls/position'
13
- require 'consumer/controls/stream'
14
13
  require 'consumer/controls/stream_name'
15
14
 
16
15
  require 'consumer/controls/position_store'
@@ -2,7 +2,7 @@ module Consumer
2
2
  module Controls
3
3
  module Consumer
4
4
  def self.example
5
- Example.new Stream.example
5
+ Example.new StreamName.example
6
6
  end
7
7
 
8
8
  class Example
@@ -1,6 +1,10 @@
1
1
  module Consumer
2
2
  module Controls
3
3
  module Handle
4
+ def self.example
5
+ Example.new
6
+ end
7
+
4
8
  class Example
5
9
  include Messaging::Handle
6
10
 
@@ -2,15 +2,15 @@ module Consumer
2
2
  module Controls
3
3
  module Subscription
4
4
  def self.example(next_batch: nil, batch: nil, position: nil)
5
- stream = Stream.example
5
+ stream_name = StreamName.example
6
6
 
7
7
  get = Get.example
8
8
 
9
9
  unless batch.nil?
10
- get.set_batch stream.name, batch, position
10
+ get.set_batch stream_name, batch, position
11
11
  end
12
12
 
13
- subscription = ::Consumer::Subscription.new stream, get
13
+ subscription = ::Consumer::Subscription.new stream_name, get
14
14
 
15
15
  subscription.position = position if position
16
16
 
@@ -24,6 +24,10 @@ module Consumer
24
24
  nil
25
25
  end
26
26
 
27
+ def add_handler(handler)
28
+ handlers << handler
29
+ end
30
+
27
31
  def to_proc
28
32
  method :call
29
33
  end
@@ -10,6 +10,10 @@ module Consumer
10
10
  dispatched_events << event_data
11
11
  end
12
12
 
13
+ def add_handler(handle)
14
+ handlers << handle
15
+ end
16
+
13
17
  def dispatched_events
14
18
  @dispatched_events ||= []
15
19
  end
@@ -23,6 +27,14 @@ module Consumer
23
27
 
24
28
  dispatched_events.any? &block
25
29
  end
30
+
31
+ def handlers
32
+ @handlers ||= []
33
+ end
34
+
35
+ def handler?(handler)
36
+ handlers.include? handler
37
+ end
26
38
  end
27
39
  end
28
40
  end
@@ -5,7 +5,7 @@ module Consumer
5
5
 
6
6
  configure :subscription
7
7
 
8
- initializer :stream, :get
8
+ initializer :stream_name, :get
9
9
 
10
10
  attr_accessor :next_batch
11
11
 
@@ -16,11 +16,11 @@ module Consumer
16
16
 
17
17
  dependency :cycle, Cycle
18
18
 
19
- def self.build(stream, get, position: nil, cycle_maximum_milliseconds: nil, cycle_timeout_milliseconds: nil)
19
+ def self.build(stream_name, get, position: nil, cycle_maximum_milliseconds: nil, cycle_timeout_milliseconds: nil)
20
20
  cycle_maximum_milliseconds ||= Defaults.cycle_maximum_milliseconds
21
21
  cycle_timeout_milliseconds ||= Defaults.cycle_timeout_milliseconds
22
22
 
23
- instance = new stream, get
23
+ instance = new stream_name, get
24
24
 
25
25
  instance.position = position
26
26
 
@@ -85,9 +85,5 @@ module Consumer
85
85
 
86
86
  batch
87
87
  end
88
-
89
- def stream_name
90
- stream.name
91
- end
92
88
  end
93
89
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-consumer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0.2
4
+ version: 0.4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-27 00:00:00.000000000 Z
11
+ date: 2017-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ntl-actor
@@ -104,7 +104,6 @@ files:
104
104
  - lib/consumer/controls/position.rb
105
105
  - lib/consumer/controls/position_store.rb
106
106
  - lib/consumer/controls/position_store/local_file.rb
107
- - lib/consumer/controls/stream.rb
108
107
  - lib/consumer/controls/stream_name.rb
109
108
  - lib/consumer/controls/subscription.rb
110
109
  - lib/consumer/defaults.rb
@@ -1,5 +0,0 @@
1
- module Consumer
2
- module Controls
3
- Stream = Messaging::Controls::Stream
4
- end
5
- end