async-pool 0.4.0 → 0.6.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/async/pool/controller.rb +31 -15
- data/lib/async/pool/version.rb +2 -2
- data/license.md +2 -1
- data/readme.md +8 -0
- data.tar.gz.sig +0 -0
- metadata +7 -88
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30797072f6201029b50156bd2b6f9ef035790e084a81449b906800a1fb6bcb33
|
4
|
+
data.tar.gz: d29642965319848394b3d5a2712bfe5a139fac48ec6263029b25b52e9d9fd32b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 975f7735a49f0853287bbad466aadf91e0d6b896cdb2c6d88336d94f1d4cee9c227ef8cf4ea63dcc118ca1b709ce109622d8e89f1d90d951d1ea1f261dcfa854
|
7
|
+
data.tar.gz: 7a75ec0f2d2506b85bc61ec60f3da503ddcfb5277c2390398d5a7b5834cee33b01651405f134e3c80865a5f87a975754f21cceeee1a4a2797f24c9f8efb74948
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -1,8 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2019-
|
4
|
+
# Copyright, 2019-2024, by Samuel Williams.
|
5
5
|
# Copyright, 2020, by Simon Perepelitsa.
|
6
|
+
# Copyright, 2024, by Thomas Morgan.
|
6
7
|
|
7
8
|
require 'console/logger'
|
8
9
|
|
@@ -44,6 +45,27 @@ module Async
|
|
44
45
|
# @attribute [Integer] The maximum number of resources that this pool can have at any given time.
|
45
46
|
attr_accessor :limit
|
46
47
|
|
48
|
+
def to_s
|
49
|
+
if @resources.empty?
|
50
|
+
"\#<#{self.class}(#{usage_string})>"
|
51
|
+
else
|
52
|
+
"\#<#{self.class}(#{usage_string}) #{availability_summary.join(';')}>"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def as_json(...)
|
57
|
+
{
|
58
|
+
limit: @limit,
|
59
|
+
concurrency: @guard.limit,
|
60
|
+
usage: @resources.size,
|
61
|
+
availability_summary: self.availability_summary,
|
62
|
+
}
|
63
|
+
end
|
64
|
+
|
65
|
+
def to_json(...)
|
66
|
+
as_json.to_json(...)
|
67
|
+
end
|
68
|
+
|
47
69
|
# @attribute [Integer] The maximum number of concurrent tasks that can be creating a new resource.
|
48
70
|
def concurrency
|
49
71
|
@guard.limit
|
@@ -133,14 +155,6 @@ module Async
|
|
133
155
|
@gardener&.stop
|
134
156
|
end
|
135
157
|
|
136
|
-
def to_s
|
137
|
-
if @resources.empty?
|
138
|
-
"\#<#{self.class}(#{usage_string})>"
|
139
|
-
else
|
140
|
-
"\#<#{self.class}(#{usage_string}) #{availability_string}>"
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
158
|
# Retire (and close) all unused resources. If a block is provided, it should implement the desired functionality for unused resources.
|
145
159
|
# @param retain [Integer] the minimum number of resources to retain.
|
146
160
|
# @yield resource [Resource] unused resources.
|
@@ -156,10 +170,12 @@ module Async
|
|
156
170
|
|
157
171
|
# It's okay for this to context switch:
|
158
172
|
unused.each do |resource|
|
159
|
-
if
|
160
|
-
|
161
|
-
|
162
|
-
|
173
|
+
if usage = @resources[resource] and usage.zero?
|
174
|
+
if block_given?
|
175
|
+
yield resource
|
176
|
+
else
|
177
|
+
retire(resource)
|
178
|
+
end
|
163
179
|
end
|
164
180
|
|
165
181
|
break if @resources.size <= retain
|
@@ -215,10 +231,10 @@ module Async
|
|
215
231
|
"#{@resources.size}/#{@limit || '∞'}"
|
216
232
|
end
|
217
233
|
|
218
|
-
def
|
234
|
+
def availability_summary
|
219
235
|
@resources.collect do |resource, usage|
|
220
236
|
"#{usage}/#{resource.concurrency}#{resource.viable? ? nil : '*'}/#{resource.count}"
|
221
|
-
end
|
237
|
+
end
|
222
238
|
end
|
223
239
|
|
224
240
|
# def usage
|
data/lib/async/pool/version.rb
CHANGED
data/license.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# MIT License
|
2
2
|
|
3
|
-
Copyright, 2019-
|
3
|
+
Copyright, 2019-2024, by Samuel Williams.
|
4
4
|
Copyright, 2020, by Simon Perepelitsa.
|
5
5
|
Copyright, 2021, by Olle Jonsson.
|
6
|
+
Copyright, 2024, by Thomas Morgan.
|
6
7
|
|
7
8
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
8
9
|
of this software and associated documentation files (the "Software"), to deal
|
data/readme.md
CHANGED
@@ -52,3 +52,11 @@ We welcome contributions to this project.
|
|
52
52
|
3. Commit your changes (`git commit -am 'Add some feature'`).
|
53
53
|
4. Push to the branch (`git push origin my-new-feature`).
|
54
54
|
5. Create new Pull Request.
|
55
|
+
|
56
|
+
### Developer Certificate of Origin
|
57
|
+
|
58
|
+
This project uses the [Developer Certificate of Origin](https://developercertificate.org/). All contributors to this project must agree to this document to have their contributions accepted.
|
59
|
+
|
60
|
+
### Contributor Covenant
|
61
|
+
|
62
|
+
This project is governed by the [Contributor Covenant](https://www.contributor-covenant.org/). All contributors and participants agree to abide by its terms.
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: async-pool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
- Olle Jonsson
|
9
9
|
- Simon Perepelitsa
|
10
|
+
- Thomas Morgan
|
10
11
|
autorequire:
|
11
12
|
bindir: bin
|
12
13
|
cert_chain:
|
@@ -39,7 +40,7 @@ cert_chain:
|
|
39
40
|
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
40
41
|
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
41
42
|
-----END CERTIFICATE-----
|
42
|
-
date:
|
43
|
+
date: 2024-04-22 00:00:00.000000000 Z
|
43
44
|
dependencies:
|
44
45
|
- !ruby/object:Gem::Dependency
|
45
46
|
name: async
|
@@ -55,90 +56,6 @@ dependencies:
|
|
55
56
|
- - ">="
|
56
57
|
- !ruby/object:Gem::Version
|
57
58
|
version: '1.25'
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
|
-
name: bake-test
|
60
|
-
requirement: !ruby/object:Gem::Requirement
|
61
|
-
requirements:
|
62
|
-
- - ">="
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
version: '0'
|
65
|
-
type: :development
|
66
|
-
prerelease: false
|
67
|
-
version_requirements: !ruby/object:Gem::Requirement
|
68
|
-
requirements:
|
69
|
-
- - ">="
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
version: '0'
|
72
|
-
- !ruby/object:Gem::Dependency
|
73
|
-
name: bake-test-external
|
74
|
-
requirement: !ruby/object:Gem::Requirement
|
75
|
-
requirements:
|
76
|
-
- - ">="
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: '0'
|
79
|
-
type: :development
|
80
|
-
prerelease: false
|
81
|
-
version_requirements: !ruby/object:Gem::Requirement
|
82
|
-
requirements:
|
83
|
-
- - ">="
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
86
|
-
- !ruby/object:Gem::Dependency
|
87
|
-
name: bundler
|
88
|
-
requirement: !ruby/object:Gem::Requirement
|
89
|
-
requirements:
|
90
|
-
- - ">="
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
version: '0'
|
93
|
-
type: :development
|
94
|
-
prerelease: false
|
95
|
-
version_requirements: !ruby/object:Gem::Requirement
|
96
|
-
requirements:
|
97
|
-
- - ">="
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: '0'
|
100
|
-
- !ruby/object:Gem::Dependency
|
101
|
-
name: covered
|
102
|
-
requirement: !ruby/object:Gem::Requirement
|
103
|
-
requirements:
|
104
|
-
- - ">="
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
version: '0'
|
107
|
-
type: :development
|
108
|
-
prerelease: false
|
109
|
-
version_requirements: !ruby/object:Gem::Requirement
|
110
|
-
requirements:
|
111
|
-
- - ">="
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
version: '0'
|
114
|
-
- !ruby/object:Gem::Dependency
|
115
|
-
name: sus
|
116
|
-
requirement: !ruby/object:Gem::Requirement
|
117
|
-
requirements:
|
118
|
-
- - "~>"
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version: '0.15'
|
121
|
-
type: :development
|
122
|
-
prerelease: false
|
123
|
-
version_requirements: !ruby/object:Gem::Requirement
|
124
|
-
requirements:
|
125
|
-
- - "~>"
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
version: '0.15'
|
128
|
-
- !ruby/object:Gem::Dependency
|
129
|
-
name: sus-fixtures-async
|
130
|
-
requirement: !ruby/object:Gem::Requirement
|
131
|
-
requirements:
|
132
|
-
- - ">="
|
133
|
-
- !ruby/object:Gem::Version
|
134
|
-
version: '0'
|
135
|
-
type: :development
|
136
|
-
prerelease: false
|
137
|
-
version_requirements: !ruby/object:Gem::Requirement
|
138
|
-
requirements:
|
139
|
-
- - ">="
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '0'
|
142
59
|
description:
|
143
60
|
email:
|
144
61
|
executables: []
|
@@ -155,7 +72,9 @@ homepage: https://github.com/socketry/async-pool
|
|
155
72
|
licenses:
|
156
73
|
- MIT
|
157
74
|
metadata:
|
75
|
+
documentation_uri: https://socketry.github.io/async-pool/
|
158
76
|
funding_uri: https://github.com/sponsors/ioquatix/
|
77
|
+
source_code_uri: https://github.com/socketry/async-pool.git
|
159
78
|
post_install_message:
|
160
79
|
rdoc_options: []
|
161
80
|
require_paths:
|
@@ -164,14 +83,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
164
83
|
requirements:
|
165
84
|
- - ">="
|
166
85
|
- !ruby/object:Gem::Version
|
167
|
-
version: '
|
86
|
+
version: '3.1'
|
168
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
169
88
|
requirements:
|
170
89
|
- - ">="
|
171
90
|
- !ruby/object:Gem::Version
|
172
91
|
version: '0'
|
173
92
|
requirements: []
|
174
|
-
rubygems_version: 3.
|
93
|
+
rubygems_version: 3.5.3
|
175
94
|
signing_key:
|
176
95
|
specification_version: 4
|
177
96
|
summary: A singleplex and multiplex resource pool for implementing robust clients.
|
metadata.gz.sig
CHANGED
Binary file
|