evt-message_store 1.0.1.1 → 1.0.1.2
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/message_store/read/iterator.rb +65 -34
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6f8bc3eff87f99068e4ce07e8eb16e432a94670a98efc1f0c5c8bf9f088eac0
|
4
|
+
data.tar.gz: 5f3e8a3652909a57c67e32af2255452bd2e08a4805f21dd070cd05b8653439b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1ac5dd9d08309e768d47d826e2b8efd0a7b61f039d89f9f4da9c74a623aa6dac1f779fc228fa7d07acf0fd55543a64d9a88bdcb95db23bd399f6390deeec9a0
|
7
|
+
data.tar.gz: f2d459e14781ec06b7936135fdb2db46b39ea3ed01523f3c01217aaf3c4f3b11f3db3718277bba82b4e5c58bafff78d0eb413696a4eaeba034427f9247f5a996
|
@@ -19,14 +19,22 @@ module MessageStore
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
attr_accessor :starting_position
|
23
22
|
attr_accessor :batch
|
24
23
|
|
24
|
+
def starting_position
|
25
|
+
@starting_position ||= 0
|
26
|
+
end
|
27
|
+
attr_writer :starting_position
|
28
|
+
|
25
29
|
def batch_index
|
26
30
|
@batch_index ||= 0
|
27
31
|
end
|
28
32
|
attr_writer :batch_index
|
29
33
|
|
34
|
+
def batch_size
|
35
|
+
get.batch_size
|
36
|
+
end
|
37
|
+
|
30
38
|
module Build
|
31
39
|
def build(stream_name, position: nil)
|
32
40
|
new(stream_name).tap do |instance|
|
@@ -47,7 +55,9 @@ module MessageStore
|
|
47
55
|
def next
|
48
56
|
logger.trace { "Getting next message data (Batch Length: #{(batch &.length).inspect}, Batch Index: #{batch_index})" }
|
49
57
|
|
50
|
-
|
58
|
+
if batch_depleted?
|
59
|
+
resupply
|
60
|
+
end
|
51
61
|
|
52
62
|
message_data = batch[batch_index]
|
53
63
|
|
@@ -59,35 +69,14 @@ module MessageStore
|
|
59
69
|
message_data
|
60
70
|
end
|
61
71
|
|
62
|
-
def advance_batch_index
|
63
|
-
logger.trace { "Advancing batch index (Batch Index: #{batch_index})" }
|
64
|
-
self.batch_index += 1
|
65
|
-
logger.debug { "Advanced batch index (Batch Index: #{batch_index})" }
|
66
|
-
end
|
67
|
-
|
68
|
-
def batch_depleted?
|
69
|
-
if batch.nil?
|
70
|
-
logger.debug { "Batch is depleted (Batch is nil)" }
|
71
|
-
return true
|
72
|
-
end
|
73
|
-
|
74
|
-
if batch.empty?
|
75
|
-
logger.debug { "Batch is depleted (Batch is empty)" }
|
76
|
-
return true
|
77
|
-
end
|
78
|
-
|
79
|
-
if batch_index == batch.length
|
80
|
-
logger.debug { "Batch is depleted (Batch Index: #{batch_index}, Batch Length: #{batch.length})" }
|
81
|
-
return true
|
82
|
-
end
|
83
|
-
|
84
|
-
false
|
85
|
-
end
|
86
|
-
|
87
72
|
def resupply
|
88
73
|
logger.trace { "Resupplying batch (Current Batch Length: #{(batch &.length).inspect})" }
|
89
74
|
|
90
|
-
batch =
|
75
|
+
batch = []
|
76
|
+
unless stream_depleted?
|
77
|
+
batch = get_batch
|
78
|
+
end
|
79
|
+
|
91
80
|
reset(batch)
|
92
81
|
|
93
82
|
logger.debug { "Batch resupplied (Next Batch Length: #{(batch &.length).inspect})" }
|
@@ -98,10 +87,7 @@ module MessageStore
|
|
98
87
|
|
99
88
|
logger.trace "Getting batch (Position: #{position.inspect})"
|
100
89
|
|
101
|
-
batch =
|
102
|
-
if position.nil? || position >= 0
|
103
|
-
batch = get.(stream_name, position: position)
|
104
|
-
end
|
90
|
+
batch = get.(stream_name, position: position)
|
105
91
|
|
106
92
|
logger.debug { "Finished getting batch (Count: #{batch.length}, Position: #{position.inspect})" }
|
107
93
|
|
@@ -109,8 +95,8 @@ module MessageStore
|
|
109
95
|
end
|
110
96
|
|
111
97
|
def next_batch_starting_position
|
112
|
-
if
|
113
|
-
logger.debug { "Batch is
|
98
|
+
if not batch_initialized?
|
99
|
+
logger.debug { "Batch is not initialized (Next batch starting position: #{starting_position.inspect})" }
|
114
100
|
return starting_position
|
115
101
|
end
|
116
102
|
|
@@ -132,6 +118,51 @@ module MessageStore
|
|
132
118
|
logger.debug { "Done resetting batch" }
|
133
119
|
end
|
134
120
|
|
121
|
+
def advance_batch_index
|
122
|
+
logger.trace { "Advancing batch index (Batch Index: #{batch_index})" }
|
123
|
+
self.batch_index += 1
|
124
|
+
logger.debug { "Advanced batch index (Batch Index: #{batch_index})" }
|
125
|
+
end
|
126
|
+
|
127
|
+
def batch_initialized?
|
128
|
+
not batch.nil?
|
129
|
+
end
|
130
|
+
|
131
|
+
def batch_depleted?
|
132
|
+
if not batch_initialized?
|
133
|
+
logger.debug { "Batch is depleted (Batch is not initialized)" }
|
134
|
+
return true
|
135
|
+
end
|
136
|
+
|
137
|
+
if batch.empty?
|
138
|
+
logger.debug { "Batch is depleted (Batch is empty)" }
|
139
|
+
return true
|
140
|
+
end
|
141
|
+
|
142
|
+
if batch_index == batch.length
|
143
|
+
logger.debug { "Batch is depleted (Batch Index: #{batch_index}, Batch Length: #{batch.length})" }
|
144
|
+
return true
|
145
|
+
end
|
146
|
+
|
147
|
+
logger.debug { "Batch is not depleted (Batch Index: #{batch_index}, Batch Length: #{batch.length})" }
|
148
|
+
false
|
149
|
+
end
|
150
|
+
|
151
|
+
def stream_depleted?
|
152
|
+
if not batch_initialized?
|
153
|
+
logger.debug { "Stream is not depleted (Batch Length: (batch is nil), Batch Size: #{batch_size})" }
|
154
|
+
return false
|
155
|
+
end
|
156
|
+
|
157
|
+
if batch.length < batch_size
|
158
|
+
logger.debug { "Stream is depleted (Batch Length: #{batch.length}, Batch Size: #{batch_size})" }
|
159
|
+
return true
|
160
|
+
end
|
161
|
+
|
162
|
+
logger.debug { "Stream is not depleted (Batch Length: #{batch.length}, Batch Size: #{batch_size})" }
|
163
|
+
false
|
164
|
+
end
|
165
|
+
|
135
166
|
class Substitute
|
136
167
|
include Read::Iterator
|
137
168
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: evt-message_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.1.
|
4
|
+
version: 1.0.1.2
|
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:
|
11
|
+
date: 2019-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: evt-casing
|
@@ -178,8 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
178
|
- !ruby/object:Gem::Version
|
179
179
|
version: '0'
|
180
180
|
requirements: []
|
181
|
-
|
182
|
-
rubygems_version: 2.7.3
|
181
|
+
rubygems_version: 3.0.1
|
183
182
|
signing_key:
|
184
183
|
specification_version: 4
|
185
184
|
summary: Common primitives for platform-specific message store implementations
|