evt-consumer 0.4.0.2 → 0.4.1.0

Sign up to get free protection for your applications and to get access to all the features.
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