polyphony 0.51.0 → 0.52.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,7 +7,7 @@ module Polyphony
7
7
  def watch(cmd = nil, &block)
8
8
  terminated = nil
9
9
  pid = cmd ? Kernel.spawn(cmd) : Polyphony.fork(&block)
10
- Thread.current.backend.waitpid(pid)
10
+ Polyphony.backend_waitpid(pid)
11
11
  terminated = true
12
12
  ensure
13
13
  kill_process(pid) unless terminated || pid.nil?
@@ -23,7 +23,7 @@ module Polyphony
23
23
 
24
24
  def kill_and_await(sig, pid)
25
25
  ::Process.kill(sig, pid)
26
- Thread.current.backend.waitpid(pid)
26
+ Polyphony.backend_waitpid(pid)
27
27
  rescue Errno::ESRCH
28
28
  # process doesn't exist
29
29
  end
@@ -21,7 +21,7 @@ module Polyphony
21
21
  elsif block.arity > 0
22
22
  cancel_after_with_block(Fiber.current, interval, with_exception, &block)
23
23
  else
24
- Thread.current.backend.timeout(interval, with_exception, &block)
24
+ Polyphony.backend_timeout(interval, with_exception, &block)
25
25
  end
26
26
  end
27
27
 
@@ -82,7 +82,7 @@ module Polyphony
82
82
  end
83
83
 
84
84
  def every(interval, &block)
85
- Thread.current.backend.timer_loop(interval, &block)
85
+ Polyphony.backend_timer_loop(interval, &block)
86
86
  end
87
87
 
88
88
  def move_on_after(interval, with_value: nil, &block)
@@ -91,7 +91,7 @@ module Polyphony
91
91
  elsif block.arity > 0
92
92
  move_on_after_with_block(Fiber.current, interval, with_value, &block)
93
93
  else
94
- Thread.current.backend.timeout(interval, nil, with_value, &block)
94
+ Polyphony.backend_timeout(interval, nil, with_value, &block)
95
95
  end
96
96
  end
97
97
 
@@ -129,11 +129,11 @@ module Polyphony
129
129
  def sleep(duration = nil)
130
130
  return sleep_forever unless duration
131
131
 
132
- Thread.current.backend.sleep duration
132
+ Polyphony.backend_sleep duration
133
133
  end
134
134
 
135
135
  def sleep_forever
136
- Thread.current.backend.wait_event(true)
136
+ Polyphony.backend_wait_event(true)
137
137
  end
138
138
 
139
139
  def throttled_loop(rate = nil, **opts, &block)
@@ -46,7 +46,7 @@ module Polyphony
46
46
  def wait(mutex, _timeout = nil)
47
47
  mutex.conditional_release
48
48
  @queue << Fiber.current
49
- Thread.current.backend.wait_event(true)
49
+ Polyphony.backend_wait_event(true)
50
50
  mutex.conditional_reacquire
51
51
  end
52
52
 
@@ -12,7 +12,7 @@ module Polyphony
12
12
  def call
13
13
  now = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
14
14
  delta = @next_time - now
15
- Thread.current.backend.sleep(delta) if delta > 0
15
+ Polyphony.backend_sleep(delta) if delta > 0
16
16
  yield self
17
17
 
18
18
  while true
@@ -18,7 +18,7 @@ module Polyphony
18
18
  interval: duration,
19
19
  target_stamp: now + duration
20
20
  }
21
- Thread.current.backend.wait_event(true)
21
+ Polyphony.backend_wait_event(true)
22
22
  ensure
23
23
  @timeouts.delete(fiber)
24
24
  end
@@ -38,7 +38,7 @@ module Polyphony
38
38
  recurring: true
39
39
  }
40
40
  while true
41
- Thread.current.backend.wait_event(true)
41
+ Polyphony.backend_wait_event(true)
42
42
  yield
43
43
  end
44
44
  ensure
@@ -55,7 +55,7 @@ module ::Process
55
55
  class << self
56
56
  alias_method :orig_detach, :detach
57
57
  def detach(pid)
58
- fiber = spin { Thread.current.backend.waitpid(pid) }
58
+ fiber = spin { Polyphony.backend_waitpid(pid) }
59
59
  fiber.define_singleton_method(:pid) { pid }
60
60
  fiber
61
61
  end
@@ -101,7 +101,7 @@ class ::IO
101
101
  return @read_buffer.slice!(0) if @read_buffer && !@read_buffer.empty?
102
102
 
103
103
  @read_buffer ||= +''
104
- Thread.current.backend.read(self, @read_buffer, 8192, false)
104
+ Polyphony.backend_read(self, @read_buffer, 8192, false)
105
105
  return @read_buffer.slice!(0) if !@read_buffer.empty?
106
106
 
107
107
  nil
@@ -110,7 +110,7 @@ class ::IO
110
110
  alias_method :orig_read, :read
111
111
  def read(len = nil)
112
112
  @read_buffer ||= +''
113
- result = Thread.current.backend.read(self, @read_buffer, len, true)
113
+ result = Polyphony.backend_read(self, @read_buffer, len, true)
114
114
  return nil unless result
115
115
 
116
116
  already_read = @read_buffer
@@ -120,7 +120,7 @@ class ::IO
120
120
 
121
121
  alias_method :orig_readpartial, :read
122
122
  def readpartial(len, str = +'')
123
- result = Thread.current.backend.read(self, str, len, false)
123
+ result = Polyphony.backend_read(self, str, len, false)
124
124
  raise EOFError unless result
125
125
 
126
126
  result
@@ -128,12 +128,12 @@ class ::IO
128
128
 
129
129
  alias_method :orig_write, :write
130
130
  def write(str, *args)
131
- Thread.current.backend.write(self, str, *args)
131
+ Polyphony.backend_write(self, str, *args)
132
132
  end
133
133
 
134
134
  alias_method :orig_write_chevron, :<<
135
135
  def <<(str)
136
- Thread.current.backend.write(self, str)
136
+ Polyphony.backend_write(self, str)
137
137
  self
138
138
  end
139
139
 
@@ -217,34 +217,21 @@ class ::IO
217
217
  end
218
218
 
219
219
  def read_loop(&block)
220
- Thread.current.backend.read_loop(self, &block)
220
+ Polyphony.backend_read_loop(self, &block)
221
221
  end
222
222
 
223
- def feed_loop(receiver, method, &block)
224
- Thread.current.backend.feed_loop(self, receiver, method, &block)
223
+ def feed_loop(receiver, method = :call, &block)
224
+ Polyphony.backend_feed_loop(self, receiver, method, &block)
225
225
  end
226
226
 
227
- # alias_method :orig_read, :read
228
- # def read(length = nil, outbuf = nil)
229
- # if length
230
- # return outbuf ? readpartial(length) : readpartial(length, outbuf)
231
- # end
232
-
233
- # until eof?
234
- # outbuf ||= +''
235
- # outbuf << readpartial(8192)
236
- # end
237
- # outbuf
238
- # end
239
-
240
227
  def wait_readable(timeout = nil)
241
228
  if timeout
242
229
  move_on_after(timeout) do
243
- Thread.current.backend.wait_io(self, false)
230
+ Polyphony.backend_wait_io(self, false)
244
231
  self
245
232
  end
246
233
  else
247
- Thread.current.backend.wait_io(self, false)
234
+ Polyphony.backend_wait_io(self, false)
248
235
  self
249
236
  end
250
237
  end
@@ -252,11 +239,11 @@ class ::IO
252
239
  def wait_writable(timeout = nil)
253
240
  if timeout
254
241
  move_on_after(timeout) do
255
- Thread.current.backend.wait_io(self, true)
242
+ Polyphony.backend_wait_io(self, true)
256
243
  self
257
244
  end
258
245
  else
259
- Thread.current.backend.wait_io(self, true)
246
+ Polyphony.backend_wait_io(self, true)
260
247
  self
261
248
  end
262
249
  end
@@ -28,8 +28,8 @@ class ::OpenSSL::SSL::SSLSocket
28
28
  while true
29
29
  result = accept_nonblock(exception: false)
30
30
  case result
31
- when :wait_readable then Thread.current.backend.wait_io(io, false)
32
- when :wait_writable then Thread.current.backend.wait_io(io, true)
31
+ when :wait_readable then Polyphony.backend_wait_io(io, false)
32
+ when :wait_writable then Polyphony.backend_wait_io(io, true)
33
33
  else
34
34
  return result
35
35
  end
@@ -46,8 +46,8 @@ class ::OpenSSL::SSL::SSLSocket
46
46
  def sysread(maxlen, buf = +'')
47
47
  while true
48
48
  case (result = read_nonblock(maxlen, buf, exception: false))
49
- when :wait_readable then Thread.current.backend.wait_io(io, false)
50
- when :wait_writable then Thread.current.backend.wait_io(io, true)
49
+ when :wait_readable then Polyphony.backend_wait_io(io, false)
50
+ when :wait_writable then Polyphony.backend_wait_io(io, true)
51
51
  else return result
52
52
  end
53
53
  end
@@ -57,8 +57,8 @@ class ::OpenSSL::SSL::SSLSocket
57
57
  def syswrite(buf)
58
58
  while true
59
59
  case (result = write_nonblock(buf, exception: false))
60
- when :wait_readable then Thread.current.backend.wait_io(io, false)
61
- when :wait_writable then Thread.current.backend.wait_io(io, true)
60
+ when :wait_readable then Polyphony.backend_wait_io(io, false)
61
+ when :wait_writable then Polyphony.backend_wait_io(io, true)
62
62
  else
63
63
  return result
64
64
  end
@@ -8,31 +8,31 @@ require_relative '../core/thread_pool'
8
8
  # Socket overrides (eventually rewritten in C)
9
9
  class ::Socket
10
10
  def accept
11
- Thread.current.backend.accept(self, TCPSocket)
11
+ Polyphony.backend_accept(self, TCPSocket)
12
12
  end
13
13
 
14
14
  def accept_loop(&block)
15
- Thread.current.backend.accept_loop(self, TCPSocket, &block)
15
+ Polyphony.backend_accept_loop(self, TCPSocket, &block)
16
16
  end
17
17
 
18
18
  NO_EXCEPTION = { exception: false }.freeze
19
19
 
20
20
  def connect(addr)
21
21
  addr = Addrinfo.new(addr) if addr.is_a?(String)
22
- Thread.current.backend.connect(self, addr.ip_address, addr.ip_port)
22
+ Polyphony.backend_connect(self, addr.ip_address, addr.ip_port)
23
23
  end
24
24
 
25
25
  def recv(maxlen, flags = 0, outbuf = nil)
26
- Thread.current.backend.recv(self, outbuf || +'', maxlen)
26
+ Polyphony.backend_recv(self, outbuf || +'', maxlen)
27
27
  end
28
28
 
29
29
  def recv_loop(&block)
30
- Thread.current.backend.recv_loop(self, &block)
30
+ Polyphony.backend_recv_loop(self, &block)
31
31
  end
32
32
  alias_method :read_loop, :recv_loop
33
33
 
34
- def feed_loop(receiver, method, &block)
35
- Thread.current.backend.recv_feed_loop(self, receiver, method, &block)
34
+ def feed_loop(receiver, method = :call, &block)
35
+ Polyphony.backend_recv_feed_loop(self, receiver, method, &block)
36
36
  end
37
37
 
38
38
  def recvfrom(maxlen, flags = 0)
@@ -41,28 +41,24 @@ class ::Socket
41
41
  result = recvfrom_nonblock(maxlen, flags, @read_buffer, **NO_EXCEPTION)
42
42
  case result
43
43
  when nil then raise IOError
44
- when :wait_readable then Thread.current.backend.wait_io(self, false)
44
+ when :wait_readable then Polyphony.backend_wait_io(self, false)
45
45
  else
46
46
  return result
47
47
  end
48
48
  end
49
49
  end
50
50
 
51
- def send(mesg, flags = 0)
52
- Thread.current.backend.send(self, mesg)
51
+ def send(mesg, flags)
52
+ Polyphony.backend_send(self, mesg, flags)
53
53
  end
54
54
 
55
- def write(str, *args)
56
- if args.empty?
57
- Thread.current.backend.send(self, str)
58
- else
59
- Thread.current.backend.send(self, str + args.join)
60
- end
55
+ def write(*args)
56
+ Polyphony.backend_sendv(self, args, 0)
61
57
  end
62
58
  alias_method :<<, :write
63
59
 
64
60
  def readpartial(maxlen, str = +'')
65
- Thread.current.backend.recv(self, str, maxlen)
61
+ Polyphony.backend_recv(self, str, maxlen)
66
62
  end
67
63
 
68
64
  ZERO_LINGER = [0, 0].pack('ii').freeze
@@ -142,34 +138,30 @@ class ::TCPSocket
142
138
  end
143
139
 
144
140
  def recv(maxlen, flags = 0, outbuf = nil)
145
- Thread.current.backend.recv(self, outbuf || +'', maxlen)
141
+ Polyphony.backend_recv(self, outbuf || +'', maxlen)
146
142
  end
147
143
 
148
144
  def recv_loop(&block)
149
- Thread.current.backend.recv_loop(self, &block)
145
+ Polyphony.backend_recv_loop(self, &block)
150
146
  end
151
147
  alias_method :read_loop, :recv_loop
152
148
 
153
- def feed_loop(receiver, method, &block)
154
- Thread.current.backend.recv_feed_loop(self, receiver, method, &block)
149
+ def feed_loop(receiver, method = :call, &block)
150
+ Polyphony.backend_recv_feed_loop(self, receiver, method, &block)
155
151
  end
156
152
 
157
- def send(mesg, flags = 0)
158
- Thread.current.backend.send(self, mesg)
153
+ def send(mesg, flags)
154
+ Polyphony.backend_send(self, mesg, flags)
159
155
  end
160
156
 
161
- def write(str, *args)
162
- if args.empty?
163
- Thread.current.backend.send(self, str)
164
- else
165
- Thread.current.backend.send(self, str + args.join)
166
- end
157
+ def write(*args)
158
+ Polyphony.backend_sendv(self, args, 0)
167
159
  end
168
160
  alias_method :<<, :write
169
161
 
170
162
  def readpartial(maxlen, str = nil)
171
163
  @read_buffer ||= +''
172
- result = Thread.current.backend.recv(self, @read_buffer, maxlen)
164
+ result = Polyphony.backend_recv(self, @read_buffer, maxlen)
173
165
  raise EOFError unless result
174
166
 
175
167
  if str
@@ -200,12 +192,12 @@ class ::TCPServer
200
192
 
201
193
  alias_method :orig_accept, :accept
202
194
  def accept
203
- Thread.current.backend.accept(@io, TCPSocket)
195
+ Polyphony.backend_accept(@io, TCPSocket)
204
196
  # @io.accept
205
197
  end
206
198
 
207
199
  def accept_loop(&block)
208
- Thread.current.backend.accept_loop(@io, TCPSocket, &block)
200
+ Polyphony.backend_accept_loop(@io, TCPSocket, &block)
209
201
  end
210
202
 
211
203
  alias_method :orig_close, :close
@@ -217,44 +209,40 @@ end
217
209
  class ::UNIXServer
218
210
  alias_method :orig_accept, :accept
219
211
  def accept
220
- Thread.current.backend.accept(self, UNIXSocket)
212
+ Polyphony.backend_accept(self, UNIXSocket)
221
213
  end
222
214
 
223
215
  def accept_loop(&block)
224
- Thread.current.backend.accept_loop(self, UNIXSocket, &block)
216
+ Polyphony.backend_accept_loop(self, UNIXSocket, &block)
225
217
  end
226
218
  end
227
219
 
228
220
  class ::UNIXSocket
229
221
  def recv(maxlen, flags = 0, outbuf = nil)
230
- Thread.current.backend.recv(self, outbuf || +'', maxlen)
222
+ Polyphony.backend_recv(self, outbuf || +'', maxlen)
231
223
  end
232
224
 
233
225
  def recv_loop(&block)
234
- Thread.current.backend.recv_loop(self, &block)
226
+ Polyphony.backend_recv_loop(self, &block)
235
227
  end
236
228
  alias_method :read_loop, :recv_loop
237
229
 
238
- def feed_loop(receiver, method, &block)
239
- Thread.current.backend.recv_feed_loop(self, receiver, method, &block)
230
+ def feed_loop(receiver, method = :call, &block)
231
+ Polyphony.backend_recv_feed_loop(self, receiver, method, &block)
240
232
  end
241
233
 
242
- def send(mesg, flags = 0)
243
- Thread.current.backend.send(self, mesg)
234
+ def send(mesg, flags)
235
+ Polyphony.backend_send(self, mesg, flags)
244
236
  end
245
237
 
246
- def write(str, *args)
247
- if args.empty?
248
- Thread.current.backend.send(self, str)
249
- else
250
- Thread.current.backend.send(self, str + args.join)
251
- end
238
+ def write(*args)
239
+ Polyphony.backend_sendv(self, args, 0)
252
240
  end
253
241
  alias_method :<<, :write
254
242
 
255
243
  def readpartial(maxlen, str = nil)
256
244
  @read_buffer ||= +''
257
- result = Thread.current.backend.recv(self, @read_buffer, maxlen)
245
+ result = Polyphony.backend_recv(self, @read_buffer, maxlen)
258
246
  raise EOFError unless result
259
247
 
260
248
  if str
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polyphony
4
- VERSION = '0.51.0'
4
+ VERSION = '0.52.0'
5
5
  end
data/polyphony.gemspec CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.required_ruby_version = '>= 2.6'
23
23
 
24
24
  s.add_development_dependency 'rake-compiler', '1.1.1'
25
- s.add_development_dependency 'minitest', '5.13.0'
25
+ s.add_development_dependency 'minitest', '5.14.4'
26
26
  s.add_development_dependency 'minitest-reporters', '1.4.2'
27
27
  s.add_development_dependency 'simplecov', '0.17.1'
28
28
  s.add_development_dependency 'rubocop', '0.85.1'
@@ -38,8 +38,8 @@ Gem::Specification.new do |s|
38
38
  s.add_development_dependency 'sequel', '5.34.0'
39
39
  s.add_development_dependency 'httparty', '0.17.1'
40
40
 
41
- s.add_development_dependency 'jekyll', '~>3.8.6'
42
- s.add_development_dependency 'jekyll-remote-theme', '~>0.4.1'
43
- s.add_development_dependency 'jekyll-seo-tag', '~>2.6.1'
44
- s.add_development_dependency 'just-the-docs', '~>0.3.0'
41
+ # s.add_development_dependency 'jekyll', '~>3.8.6'
42
+ # s.add_development_dependency 'jekyll-remote-theme', '~>0.4.1'
43
+ # s.add_development_dependency 'jekyll-seo-tag', '~>2.6.1'
44
+ # s.add_development_dependency 'just-the-docs', '~>0.3.0'
45
45
  end