puppeteer-bidi 0.0.3.beta3 → 0.0.3.beta4
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/puppeteer/bidi/reactor_runner.rb +26 -12
- data/lib/puppeteer/bidi/transport.rb +1 -1
- data/lib/puppeteer/bidi/version.rb +1 -1
- data/sig/_external.rbs +1 -0
- data/sig/puppeteer/bidi/reactor_runner.rbs +6 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b794392cacbce5b48461723974e67a0e22502bad38c1aa80a49474b1a68d0839
|
|
4
|
+
data.tar.gz: cfb0d15e44f66ed1ae5b2bc4bdb3d3d51cef2a58fedd589595ec12da0d7b7493
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9c0aad71fa66ac6e9a8d04db539d58eabcf68c405816e2692a6c228c42f6a03608fb37bd254b11bf87e87984253c87641c7d6b51d1a2f85c4b921c0fee69bfa3
|
|
7
|
+
data.tar.gz: 42eb5accee635501e56df09026fa506cf1772f188ac7d2f6b595e8b70d6428380cb4a4d97023436d284a0fae8db056a00ef41d5c69fad4f67326c2a0d67ee108
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
require "async"
|
|
5
5
|
require "async/promise"
|
|
6
|
-
require "async/queue"
|
|
7
6
|
require "delegate"
|
|
8
7
|
require "thread"
|
|
9
8
|
|
|
@@ -11,6 +10,18 @@ module Puppeteer
|
|
|
11
10
|
module Bidi
|
|
12
11
|
# Runs a dedicated Async reactor in a background thread and proxies calls into it.
|
|
13
12
|
class ReactorRunner
|
|
13
|
+
class Finalizer
|
|
14
|
+
def initialize(queue, thread)
|
|
15
|
+
@queue = queue
|
|
16
|
+
@thread = thread
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def call(_id)
|
|
20
|
+
@queue.close
|
|
21
|
+
@thread.join unless ::Thread.current == @thread
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
14
25
|
class Proxy < SimpleDelegator
|
|
15
26
|
# @rbs runner: ReactorRunner -- Reactor runner
|
|
16
27
|
# @rbs target: untyped -- Target object to proxy
|
|
@@ -78,20 +89,27 @@ module Puppeteer
|
|
|
78
89
|
|
|
79
90
|
# @rbs return: void
|
|
80
91
|
def initialize
|
|
81
|
-
@queue =
|
|
92
|
+
@queue = Thread::Queue.new
|
|
82
93
|
@ready = Queue.new
|
|
83
94
|
@closed = false
|
|
84
95
|
@thread = Thread.new do
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
job.
|
|
96
|
+
begin
|
|
97
|
+
Sync do |task|
|
|
98
|
+
@ready << true
|
|
99
|
+
while (job = @queue.pop)
|
|
100
|
+
task.async do
|
|
101
|
+
job.call
|
|
102
|
+
end
|
|
103
|
+
end
|
|
89
104
|
end
|
|
105
|
+
rescue ClosedQueueError
|
|
106
|
+
# Queue closed; exit the reactor loop.
|
|
90
107
|
ensure
|
|
91
108
|
@closed = true
|
|
92
109
|
end
|
|
93
110
|
end
|
|
94
111
|
|
|
112
|
+
ObjectSpace.define_finalizer(self, Finalizer.new(@queue, @thread))
|
|
95
113
|
@ready.pop
|
|
96
114
|
end
|
|
97
115
|
|
|
@@ -103,16 +121,12 @@ module Puppeteer
|
|
|
103
121
|
|
|
104
122
|
promise = Async::Promise.new
|
|
105
123
|
job = lambda do
|
|
106
|
-
|
|
107
|
-
promise.resolve(block.call)
|
|
108
|
-
rescue => e
|
|
109
|
-
promise.reject(e)
|
|
110
|
-
end
|
|
124
|
+
Async::Promise.fulfill(promise, &block)
|
|
111
125
|
end
|
|
112
126
|
|
|
113
127
|
begin
|
|
114
128
|
@queue << job
|
|
115
|
-
rescue
|
|
129
|
+
rescue ClosedQueueError
|
|
116
130
|
raise Error, "ReactorRunner is closed"
|
|
117
131
|
end
|
|
118
132
|
|
data/sig/_external.rbs
CHANGED
|
@@ -4,6 +4,12 @@ module Puppeteer
|
|
|
4
4
|
module Bidi
|
|
5
5
|
# Runs a dedicated Async reactor in a background thread and proxies calls into it.
|
|
6
6
|
class ReactorRunner
|
|
7
|
+
class Finalizer
|
|
8
|
+
def initialize: (untyped queue, untyped thread) -> untyped
|
|
9
|
+
|
|
10
|
+
def call: (untyped _id) -> untyped
|
|
11
|
+
end
|
|
12
|
+
|
|
7
13
|
class Proxy < SimpleDelegator
|
|
8
14
|
# @rbs runner: ReactorRunner -- Reactor runner
|
|
9
15
|
# @rbs target: untyped -- Target object to proxy
|