Class: Gearman::Client
- Inherits:
-
Object
- Object
- Gearman::Client
- Includes:
- Celluloid
- Defined in:
- lib/gearman/client.rb
Instance Method Summary collapse
- #build_connection(address) ⇒ Object
- #build_connections ⇒ Object
- #current_connection ⇒ Object
- #disconnect ⇒ Object
- #forget_connection(connection) {|| ... } ⇒ Object
- #generate_unique_id_with(methodology) ⇒ Object
-
#initialize(*addresses) ⇒ Client
constructor
A new instance of Client.
- #reconnect(connection = nil, reason = nil) ⇒ Object
- #submit_job_bg(function_name, data) ⇒ Object
- #with_connection(&action) ⇒ Object
Constructor Details
#initialize(*addresses) ⇒ Client
Returns a new instance of Client.
14 15 16 17 18 19 20 |
# 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 |
Instance Method Details
#build_connection(address) ⇒ Object
49 50 51 52 53 |
# 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 ⇒ Object
43 44 45 46 47 |
# File 'lib/gearman/client.rb', line 43 def build_connections @addresses.each do |address| build_connection(address) end end |
#current_connection ⇒ Object
70 71 72 |
# File 'lib/gearman/client.rb', line 70 def current_connection @connections.first end |
#disconnect ⇒ Object
39 40 41 |
# File 'lib/gearman/client.rb', line 39 def disconnect @connections.select(&:alive?).each(&:terminate) end |
#forget_connection(connection) {|| ... } ⇒ Object
74 75 76 77 |
# 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) ⇒ Object
35 36 37 |
# File 'lib/gearman/client.rb', line 35 def generate_unique_id_with(methodology) @generate_unique_id = methodology end |
#reconnect(connection = nil, reason = nil) ⇒ Object
55 56 57 58 59 60 61 62 63 64 |
# 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) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 |
# 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) ⇒ Object
66 67 68 |
# File 'lib/gearman/client.rb', line 66 def with_connection(&action) action.call(current_connection) end |