Class: SimpleMapReduce::Server::Worker

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
AASM
Defined in:
lib/simple_map_reduce/server/worker.rb

Constant Summary collapse

STATES =
%i(ready reserved working).freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url:, id: nil, state: nil, data_store_type: 'default') ⇒ Worker

Returns a new instance of Worker.



40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 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

Instance Attribute Details

#urlObject

Returns the value of attribute url.



13
14
15
# File 'lib/simple_map_reduce/server/worker.rb', line 13

def url
  @url
end

Instance Method Details

#dumpObject



59
60
61
62
63
64
65
# File 'lib/simple_map_reduce/server/worker.rb', line 59

def dump
  {
    id: id,
    url: @url,
    state: state
  }
end

#idObject



55
56
57
# File 'lib/simple_map_reduce/server/worker.rb', line 55

def id
  @id ||= SecureRandom.uuid
end

#update!(url: nil, event: nil) ⇒ Object

update Job



71
72
73
74
75
76
77
78
79
# 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