4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/tra/mailbox.rb', line 4
def receive
Dir.mkdir DIRECTORY unless Dir.exist? DIRECTORY
file = FILE[Process.pid]
Thread.new do
Socket.unix_server_loop file do |socket|
message = Marshal.load socket.read size_of_message_from socket
patterns = PATTERNS.select { |pattern, _| pattern === message }
if patterns.empty?
QUEUE << message
else
Thread.new do
patterns.each do |_, action|
Thread.new { action.call message }
end
end
end
end
end
sleep 0.01 until File.exist? file
end
|