Skip to content

Commit 64cc58c

Browse files
committed
Move some more processes' concerns under processes/
1 parent 960694e commit 64cc58c

File tree

7 files changed

+43
-45
lines changed

7 files changed

+43
-45
lines changed

lib/solid_queue.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
require "solid_queue/app_executor"
88
require "solid_queue/processes/supervised"
99
require "solid_queue/processes/registrable"
10-
require "solid_queue/interruptible"
11-
require "solid_queue/pidfile"
12-
require "solid_queue/procline"
10+
require "solid_queue/processes/interruptible"
11+
require "solid_queue/processes/pidfile"
12+
require "solid_queue/processes/procline"
1313
require "solid_queue/processes/base"
1414
require "solid_queue/processes/runnable"
1515
require "solid_queue/signals"

lib/solid_queue/interruptible.rb

Lines changed: 0 additions & 35 deletions
This file was deleted.
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# frozen_string_literal: true
2+
3+
module SolidQueue::Processes
4+
module Interruptible
5+
def wake_up
6+
interrupt
7+
end
8+
9+
private
10+
SELF_PIPE_BLOCK_SIZE = 11
11+
12+
def interrupt
13+
self_pipe[:writer].write_nonblock( "." )
14+
rescue Errno::EAGAIN, Errno::EINTR
15+
# Ignore writes that would block and retry
16+
# if another signal arrived while writing
17+
retry
18+
end
19+
20+
def interruptible_sleep(time)
21+
if time > 0 && self_pipe[:reader].wait_readable(time)
22+
loop { self_pipe[:reader].read_nonblock(SELF_PIPE_BLOCK_SIZE) }
23+
end
24+
rescue Errno::EAGAIN, Errno::EINTR
25+
end
26+
27+
# Self-pipe for signal-handling (http://cr.yp.to/docs/selfpipe.html)
28+
def self_pipe
29+
@self_pipe ||= create_self_pipe
30+
end
31+
32+
def create_self_pipe
33+
reader, writer = IO.pipe
34+
{ reader: reader, writer: writer }
35+
end
36+
end
37+
end

lib/solid_queue/pidfile.rb renamed to lib/solid_queue/processes/pidfile.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22

3-
module SolidQueue
3+
module SolidQueue::Processes
44
class Pidfile
55
def initialize(path)
66
@path = path

lib/solid_queue/procline.rb renamed to lib/solid_queue/processes/procline.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22

3-
module SolidQueue
3+
module SolidQueue::Processes
44
module Procline
55
# Sets the procline ($0)
66
# solid-queue-supervisor(0.1.0): <string>

lib/solid_queue/signals.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ class ImmediateTerminationRequested < Interrupt; end
77
module Signals
88
extend ActiveSupport::Concern
99

10-
included do
11-
include Interruptible
12-
end
13-
1410
private
1511
SIGNALS = %i[ QUIT INT TERM ]
1612

lib/solid_queue/supervisor.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def sync_std_streams
5959

6060
def setup_pidfile
6161
@pidfile = if SolidQueue.supervisor_pidfile
62-
Pidfile.new(SolidQueue.supervisor_pidfile).tap(&:setup)
62+
Processes::Pidfile.new(SolidQueue.supervisor_pidfile).tap(&:setup)
6363
end
6464
end
6565

0 commit comments

Comments
 (0)