diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2016-12-24 01:19:09 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2016-12-24 03:08:22 +0900 |
commit | d755ab0870a2178805878692ee57fc47d429867c (patch) | |
tree | 8a52cd607488cf693706bac843373def5b7ce8d3 /app/models | |
parent | b5657c09e52173e1a418499032587cbb6560b565 (diff) | |
download | aclog-d755ab0870a2178805878692ee57fc47d429867c.tar.gz |
don't use msgpack-rpc
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/worker_manager.rb | 29 |
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 |