async-job 0.6.0 → 0.7.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
  SHA256:
3
- metadata.gz: 6aa1dbd39e225aaa055f15ffb7976669c500ce4e6a803262356f47ad026a826b
4
- data.tar.gz: c594059b63317a346fac7b7780ea99f633ab2f94c9bd20ede9bdd80c2b310f47
3
+ metadata.gz: 75714ead23077e752af18aead579e3590187f0119a564024e0dbafe1f8c0ed82
4
+ data.tar.gz: bb3d48e293245743b6f9316f250a52f274c9c27928ba869551344ee1b83390f5
5
5
  SHA512:
6
- metadata.gz: 73f4fe066ea17811d637a00592b34dc51c350287e1ffe7f73e7ae98dd3413800685804ec70b1038eca718ee353d36c41afcaf77752ed237c726aadff60545a2d
7
- data.tar.gz: b9e0dc1720b5f4bc8eb920a265e41a8a95bcdcf3db2694fdfd358fe9a62d3752b371c680acefebf1bfb12012e50440e216139725888391580180b4dc79de059e
6
+ metadata.gz: a28a7f19901b8376570e47963bd0aa3d10ba7c16440058d6da0dd74136ee7937448e4c3175ada2aad0a313540b963d6c7a17354c457c81960ade593570d35439
7
+ data.tar.gz: 82048073802bd9cfa18c29142e979e57af45f4916a62d41e327f688dbfce6be2f8ca7293db5df087458c2fff8212c878dd35611ea13730f885e8557351760e02
checksums.yaml.gz.sig CHANGED
Binary file
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2024, by Samuel Williams.
5
+
6
+ require 'console/event/failure'
7
+
8
+ module Async
9
+ module Job
10
+ module Backend
11
+ module Aggregate
12
+ class Server
13
+ def initialize(delegate, parent: nil)
14
+ @delegate = delegate
15
+
16
+ @task = nil
17
+ @ready = Async::Condition.new
18
+
19
+ @pending = Array.new
20
+ @processing = Array.new
21
+ end
22
+
23
+ def flush(jobs)
24
+ while job = jobs.shift
25
+ @delegate.call(job)
26
+ end
27
+ rescue => error
28
+ Console::Event::Failure.for(error).emit(self, "Could not flush #{jobs.size} jobs.")
29
+ end
30
+
31
+ def run
32
+ while true
33
+ while @pending.empty?
34
+ @ready.wait
35
+ end
36
+
37
+ # Swap the buffers:
38
+ @pending, @processing = @processing, @pending
39
+
40
+ flush(@processing)
41
+ end
42
+ end
43
+
44
+ def start!(parent: Async::Task.current)
45
+ @task ||= parent.async(transient: true) do
46
+ run
47
+ ensure
48
+ # Ensure that all jobs are flushed before we exit:
49
+ flush(@pending)
50
+ flush(@processing)
51
+ end
52
+ end
53
+
54
+ def call(job)
55
+ start!
56
+
57
+ @pending << job
58
+ @ready.signal
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2024, by Samuel Williams.
5
+
6
+ require_relative 'aggregate/server'
7
+
8
+ module Async
9
+ module Job
10
+ module Backend
11
+ module Aggregate
12
+ def self.new(delegate)
13
+ return Server.new(delegate)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -5,6 +5,6 @@
5
5
 
6
6
  module Async
7
7
  module Job
8
- VERSION = "0.6.0"
8
+ VERSION = "0.7.0"
9
9
  end
10
10
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-job
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -38,7 +38,7 @@ cert_chain:
38
38
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
39
39
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
40
40
  -----END CERTIFICATE-----
41
- date: 2024-08-02 00:00:00.000000000 Z
41
+ date: 2024-08-03 00:00:00.000000000 Z
42
42
  dependencies:
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: async
@@ -76,6 +76,8 @@ extra_rdoc_files: []
76
76
  files:
77
77
  - lib/async/job.rb
78
78
  - lib/async/job/backend.rb
79
+ - lib/async/job/backend/aggregate.rb
80
+ - lib/async/job/backend/aggregate/server.rb
79
81
  - lib/async/job/backend/inline.rb
80
82
  - lib/async/job/backend/inline/server.rb
81
83
  - lib/async/job/backend/redis.rb
metadata.gz.sig CHANGED
Binary file