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