Class: Async::Container::Notify::Socket
- Inherits:
-
Client
- Object
- Client
- Async::Container::Notify::Socket
show all
- Defined in:
- lib/async/container/notify/socket.rb
Constant Summary
collapse
- NOTIFY_SOCKET =
'NOTIFY_SOCKET'
- MAXIMUM_MESSAGE_SIZE =
4096
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Client
#ready!, #reloading!, #restarting!, #status!, #stopping!
Constructor Details
#initialize(path) ⇒ Socket
Returns a new instance of Socket.
42
43
44
45
|
# File 'lib/async/container/notify/socket.rb', line 42
def initialize(path)
@path = path
@endpoint = IO::Endpoint.unix(path, ::Socket::SOCK_DGRAM)
end
|
Class Method Details
.open!(environment = ENV) ⇒ Object
36
37
38
39
40
|
# File 'lib/async/container/notify/socket.rb', line 36
def self.open!(environment = ENV)
if path = environment.delete(NOTIFY_SOCKET)
self.new(path)
end
end
|
Instance Method Details
#dump(message) ⇒ Object
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/async/container/notify/socket.rb', line 47
def dump(message)
buffer = String.new
message.each do |key, value|
if value == true
value = 1
elsif value == false
value = 0
end
buffer << "#{key.to_s.upcase}=#{value}\n"
end
return buffer
end
|
#error!(text, **message) ⇒ Object
78
79
80
81
82
|
# File 'lib/async/container/notify/socket.rb', line 78
def error!(text, **message)
message[:errno] ||= -1
send(status: text, **message)
end
|
#send(**message) ⇒ Object
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/async/container/notify/socket.rb', line 64
def send(**message)
data = dump(message)
if data.bytesize > MAXIMUM_MESSAGE_SIZE
raise ArgumentError, "Message length #{message.bytesize} exceeds #{MAXIMUM_MESSAGE_SIZE}: #{message.inspect}"
end
Sync do
@endpoint.connect do |peer|
peer.send(data)
end
end
end
|