omq-cli 0.3.0 → 0.3.1

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
  SHA256:
3
- metadata.gz: 7962982bfc0731a3f52ef7de818d9b479f60ec3046002592f92d9aed601f3047
4
- data.tar.gz: 961aea9c3ecb30189672dff9bb3c29539f001a615813c9b132529034201b9681
3
+ metadata.gz: 887b1bd4a69ddbbcc0d4885c05c277f32285253e7d7163407ace5451ff87ba08
4
+ data.tar.gz: 241d25d7b9e9be0a9ea59efb8a1f92c3f9667fafd73087763347a337c84d9299
5
5
  SHA512:
6
- metadata.gz: 3e0fe43bba8360dce4daf5c8c8d46ba05010afc8a9c6958c013f3769508ea7123936b4092ff81f42d0371cf385bffc0329995ffd3f55839047135021a750cdca
7
- data.tar.gz: 3fe10d13fa4c7f079d99a89423e6d7fa6ac5fab7c121ddd3518ba021ff8668bea1a65473363cf5708b8921a7712741d923713d6c982e149efe24e564315b87c6
6
+ metadata.gz: d536665684b7c77cf5a724d057bf534b93dc19e5d0f2f9fa5035d384131353fd930b453b5e6417ca90bfa77a5a304a6759a6ae85de807e402b1ee07e5d78b033
7
+ data.tar.gz: 214a3d68093f7ac1e04a2a3b7e0438459ce826907dd0ee5baab2ed86c6bc5f571b26eb332d91383e6935e893f41344f5e656d4286e930022a20ae43a48b61ac0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.1 — 2026-04-07
4
+
5
+ ### Fixed
6
+
7
+ - **`-i` on recv-only sockets** — `pull -i 0.2` rate-limits receiving to
8
+ one message every 200 ms using `Async::Loop.quantized`. Works on all
9
+ recv-only socket types (pull, sub, gather, dish).
10
+ - **`--send-eval` with `-i` and piped stdin** — `seq 5 | omq push -E '…' -i 1`
11
+ ignored stdin and produced no output. `#read_next_or_nil` now reads
12
+ stdin when available; `#send_tick` distinguishes generator mode (no
13
+ stdin, eval only) from stdin-exhausted EOF.
14
+
3
15
  ## 0.3.0 — 2026-04-07
4
16
 
5
17
  ### Fixed
@@ -207,7 +207,13 @@ module OMQ
207
207
 
208
208
  def send_tick
209
209
  raw = read_next_or_nil
210
- if raw.nil? && !@send_eval_proc
210
+ if raw.nil?
211
+ if @send_eval_proc && !@stdin_ready
212
+ # Pure generator mode: no stdin, eval produces output from nothing.
213
+ parts = eval_send_expr(nil)
214
+ send_msg(parts) if parts
215
+ return 1
216
+ end
211
217
  @send_tick_eof = true
212
218
  return 0
213
219
  end
@@ -220,17 +226,44 @@ module OMQ
220
226
  def run_recv_logic
221
227
  n = config.count
222
228
  i = 0
223
- loop do
224
- parts = recv_msg
225
- break if parts.nil?
226
- parts = eval_recv_expr(parts)
227
- output(parts)
228
- i += 1
229
- break if n && n > 0 && i >= n
229
+ if config.interval
230
+ run_interval_recv(n)
231
+ else
232
+ loop do
233
+ parts = recv_msg
234
+ break if parts.nil?
235
+ parts = eval_recv_expr(parts)
236
+ output(parts)
237
+ i += 1
238
+ break if n && n > 0 && i >= n
239
+ end
230
240
  end
231
241
  end
232
242
 
233
243
 
244
+ def run_interval_recv(n)
245
+ i = recv_tick
246
+ return if i == 0
247
+ return if n && n > 0 && i >= n
248
+ Async::Loop.quantized(interval: config.interval) do
249
+ i += recv_tick
250
+ break if @recv_tick_eof || (n && n > 0 && i >= n)
251
+ end
252
+ end
253
+
254
+
255
+ def recv_tick
256
+ parts = recv_msg
257
+ if parts.nil?
258
+ @recv_tick_eof = true
259
+ return 0
260
+ end
261
+ parts = eval_recv_expr(parts)
262
+ output(parts)
263
+ 1
264
+ end
265
+
266
+
234
267
  # Parallel recv-eval: delegates to ParallelRecvRunner.
235
268
  #
236
269
  def run_parallel_recv(task)
@@ -328,10 +361,10 @@ module OMQ
328
361
  def read_next_or_nil
329
362
  if config.data || config.file
330
363
  read_next
331
- elsif @send_eval_proc
332
- nil
364
+ elsif stdin_ready?
365
+ read_stdin_input
333
366
  else
334
- read_next
367
+ nil
335
368
  end
336
369
  end
337
370
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OMQ
4
4
  module CLI
5
- VERSION = "0.3.0"
5
+ VERSION = "0.3.1"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omq-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrik Wenger