class Gearman::Client
Public Class Methods
new(*addresses)
click to toggle source
# File lib/gearman/client.rb, line 14 def initialize(*addresses) @addresses = addresses.map(&Kernel.method(:URI)) @generate_unique_id = SecureRandom.method(:uuid) @addresses_by_connection_id = {} @connections = [] build_connections end
Public Instance Methods
build_connection(address)
click to toggle source
# File lib/gearman/client.rb, line 49 def build_connection(address) connection = Connection.new_link(address) @addresses_by_connection_id[connection.object_id] = address @connections << connection end
build_connections()
click to toggle source
# File lib/gearman/client.rb, line 43 def build_connections @addresses.each do |address| build_connection(address) end end
current_connection()
click to toggle source
# File lib/gearman/client.rb, line 70 def current_connection @connections.first end
disconnect()
click to toggle source
# File lib/gearman/client.rb, line 39 def disconnect @connections.select(&:alive?).each(&:terminate) end
forget_connection(connection) { |addresses_by_connection_id| ... }
click to toggle source
# File lib/gearman/client.rb, line 74 def forget_connection(connection) @connections.delete(connection) yield @addresses_by_connection_id[connection.object_id] end
generate_unique_id_with(methodology)
click to toggle source
# File lib/gearman/client.rb, line 35 def generate_unique_id_with(methodology) @generate_unique_id = methodology end
reconnect(connection = nil, reason = nil)
click to toggle source
# File lib/gearman/client.rb, line 55 def reconnect(connection = nil, reason = nil) Celluloid.logger.debug(reason) if reason connection ||= current_connection connection.terminate if connection.alive? forget_connection(connection) do |address| build_connection(address) end end
submit_job_bg(function_name, data)
click to toggle source
# File lib/gearman/client.rb, line 22 def submit_job_bg(function_name, data) packet = Packet::SUBMIT_JOB_BG.new( function_name: function_name, unique_id: @generate_unique_id.(), data: data ) with_connection do |connection| connection.write(packet) connection.async.next end end
with_connection(&action)
click to toggle source
# File lib/gearman/client.rb, line 66 def with_connection(&action) action.call(current_connection) end