1
1
# frozen_string_literal: true
2
2
3
- require "concurrent-ruby"
4
3
require "ferrum/browser/subscriber"
5
4
require "ferrum/browser/web_socket"
6
5
@@ -14,15 +13,18 @@ def initialize(browser, ws_url, id_starts_with: 0)
14
13
@command_id = id_starts_with
15
14
@pendings = Concurrent ::Hash . new
16
15
@ws = WebSocket . new ( ws_url , @browser . ws_max_receive_size , @browser . logger )
17
- @subscriber , @interruptor = Subscriber . build ( 2 )
16
+ @subscriber , @interrupter = Subscriber . build ( 2 )
18
17
19
18
@thread = Thread . new do
20
19
Thread . current . abort_on_exception = true
21
20
Thread . current . report_on_exception = true if Thread . current . respond_to? ( :report_on_exception= )
22
21
23
- while message = @ws . messages . pop
22
+ loop do
23
+ message = @ws . messages . pop
24
+ break unless message
25
+
24
26
if INTERRUPTIONS . include? ( message [ "method" ] )
25
- @interruptor . async . call ( message )
27
+ @interrupter . async . call ( message )
26
28
elsif message . key? ( "method" )
27
29
@subscriber . async . call ( message )
28
30
else
@@ -51,14 +53,14 @@ def command(method, params = {})
51
53
def on ( event , &block )
52
54
case event
53
55
when *INTERRUPTIONS
54
- @interruptor . on ( event , &block )
56
+ @interrupter . on ( event , &block )
55
57
else
56
58
@subscriber . on ( event , &block )
57
59
end
58
60
end
59
61
60
62
def subscribed? ( event )
61
- [ @interruptor , @subscriber ] . any? { |s | s . subscribed? ( event ) }
63
+ [ @interrupter , @subscriber ] . any? { |s | s . subscribed? ( event ) }
62
64
end
63
65
64
66
def close
0 commit comments