class SimpleMapReduce::Server::Worker

Constants

STATES

Attributes

url[RW]

Public Class Methods

new(url:, id: nil, state: nil, data_store_type: 'default') click to toggle source
# File lib/simple_map_reduce/server/worker.rb, line 40
def initialize(url:, id: nil, state: nil, data_store_type: 'default')
  @url = url
  @id = id
  if STATES.include?(state)
    aasm_write_state_without_persistence(state)
  end
  @data_store = SimpleMapReduce::DataStoreFactory.create(data_store_type,
                                                       server_url: url,
                                                       resource_name: 'workers',
                                                       resource_id: self.id)
  unless valid?
    raise ArgumentError, 'invalid url'
  end
end

Public Instance Methods

dump() click to toggle source
# File lib/simple_map_reduce/server/worker.rb, line 59
def dump
  {
    id: id,
    url: @url,
    state: state
  }
end
id() click to toggle source
# File lib/simple_map_reduce/server/worker.rb, line 55
def id
  @id ||= SecureRandom.uuid
end
update!(url: nil, event: nil) click to toggle source

update Job @params [Hash] attributes @options attributes [String] url @options attributes [String] event

# File lib/simple_map_reduce/server/worker.rb, line 71
def update!(url: nil, event: nil)
  if url
    self.url = url
  end

  if event
    public_send(event.to_sym)
  end
end

Private Instance Methods

save_state() click to toggle source
# File lib/simple_map_reduce/server/worker.rb, line 87
def save_state
  @data_store.save_state(aasm.current_event)
end
valid?() click to toggle source
# File lib/simple_map_reduce/server/worker.rb, line 83
def valid?
  !@url.to_s.empty? && @url =~ URI::DEFAULT_PARSER.make_regexp
end