aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2016-12-24 01:19:09 +0900
committerKazuki Yamaguchi <k@rhe.jp>2016-12-24 03:08:22 +0900
commitd755ab0870a2178805878692ee57fc47d429867c (patch)
tree8a52cd607488cf693706bac843373def5b7ce8d3 /app/models
parentb5657c09e52173e1a418499032587cbb6560b565 (diff)
downloadaclog-d755ab0870a2178805878692ee57fc47d429867c.tar.gz
don't use msgpack-rpc
Diffstat (limited to 'app/models')
-rw-r--r--app/models/worker_manager.rb29
1 files changed, 11 insertions, 18 deletions
diff --git a/app/models/worker_manager.rb b/app/models/worker_manager.rb
index 6eac369..7a7d48e 100644
--- a/app/models/worker_manager.rb
+++ b/app/models/worker_manager.rb
@@ -1,33 +1,26 @@
-require "msgpack/rpc/transport/unix"
-
class WorkerManager
class << self
- def alive?
- !!client
- rescue Aclog::Exceptions::WorkerConnectionError
- false
- end
-
def update_account(account)
if account.active?
- client.call(:register_account, account.id)
+ call(:register_account, account.id)
else
- client.call(:deactivate_account, account.id)
+ call(:deactivate_account, account.id)
end
end
def status
- client.call(:status)
+ call(:status)
end
private
- def client
- begin
- transport = MessagePack::RPC::UNIXTransport.new
- MessagePack::RPC::Client.new(transport, Rails.root.join("tmp", "sockets", "collector.sock").to_s)
- rescue Errno::ECONNREFUSED, Errno::ENOENT
- raise Aclog::Exceptions::WorkerConnectionError, "Couldn't connect to the background worker"
- end
+ def call(meth, *args)
+ Socket.unix(Rails.root.join("tmp", "sockets", "collector.sock").to_s) { |sock|
+ sock.write({ method: meth, arguments: args }.to_msgpack)
+ sock.close_write
+ MessagePack.unpack(sock.read)
+ }
+ rescue SystemCallError
+ raise Aclog::Exceptions::WorkerConnectionError, "Couldn't connect to the background worker"
end
end
end