Class: RRRSpec::Worker
- Inherits:
-
Object
- Object
- RRRSpec::Worker
- Defined in:
- lib/rrrspec/redis_models.rb
Instance Attribute Summary collapse
-
#key ⇒ Object
readonly
Returns the value of attribute key.
Class Method Summary collapse
-
.create(worker_type, hostname = RRRSpec.hostname) ⇒ Object
Public: Create a new worker.
-
.list ⇒ Object
Public: A list of the workers which are possibly available.
Instance Method Summary collapse
- #==(other) ⇒ Object
-
#current_taskset ⇒ Object
Public: Current taskset.
-
#dequeue_taskset ⇒ Object
Public: Dequeue the taskset from the taskset_queue.
-
#enqueue_taskset(taskset) ⇒ Object
Public: Enqueue the taskset to the taskset_queue.
-
#evict ⇒ Object
Public: Remove myself from the worker list.
-
#exist? ⇒ Boolean
Public: Check its existence with heartbeat key.
-
#heartbeat(time) ⇒ Object
Public: Maintain heartbeat.
-
#initialize(worker_key) ⇒ Worker
constructor
A new instance of Worker.
-
#queue_empty? ⇒ Boolean
Public: Checks whether the taskset_queue is empty.
-
#update_current_taskset(taskset) ⇒ Object
Public: Update the current taskset.
-
#worker_type ⇒ Object
Public: The worker_type.
Constructor Details
#initialize(worker_key) ⇒ Worker
Returns a new instance of Worker.
836 837 838 |
# File 'lib/rrrspec/redis_models.rb', line 836 def initialize(worker_key) @key = worker_key end |
Instance Attribute Details
#key ⇒ Object (readonly)
Returns the value of attribute key.
834 835 836 |
# File 'lib/rrrspec/redis_models.rb', line 834 def key @key end |
Class Method Details
.create(worker_type, hostname = RRRSpec.hostname) ⇒ Object
Public: Create a new worker. The worker returned is NOT appeared in Worker.list.
842 843 844 845 846 847 848 |
# File 'lib/rrrspec/redis_models.rb', line 842 def self.create(worker_type, hostname=RRRSpec.hostname) worker_key = RRRSpec.make_key('rrrspec', 'worker', hostname) RRRSpec.redis.hset(worker_key, 'worker_type', worker_type) worker = new(worker_key) return worker end |
Instance Method Details
#==(other) ⇒ Object
864 865 866 |
# File 'lib/rrrspec/redis_models.rb', line 864 def ==(other) @key == other.key end |
#current_taskset ⇒ Object
Public: Current taskset
Returns a taskset or nil
882 883 884 885 886 887 888 889 |
# File 'lib/rrrspec/redis_models.rb', line 882 def current_taskset taskset_key = RRRSpec.redis.hget(key, 'taskset') if taskset_key.present? return Taskset.new(taskset_key) else nil end end |
#dequeue_taskset ⇒ Object
Public: Dequeue the taskset from the taskset_queue
906 907 908 909 |
# File 'lib/rrrspec/redis_models.rb', line 906 def dequeue_taskset _, taskset_key = RRRSpec.redis.blpop(RRRSpec.make_key(key, 'worker_queue'), 0) return Taskset.new(taskset_key) end |
#enqueue_taskset(taskset) ⇒ Object
Public: Enqueue the taskset to the taskset_queue
901 902 903 |
# File 'lib/rrrspec/redis_models.rb', line 901 def enqueue_taskset(taskset) RRRSpec.redis.rpush(RRRSpec.make_key(key, 'worker_queue'), taskset.key) end |
#evict ⇒ Object
Public: Remove myself from the worker list.
860 861 862 |
# File 'lib/rrrspec/redis_models.rb', line 860 def evict RRRSpec.redis.srem(RRRSpec.make_key('rrrspec', 'worker'), key) end |
#exist? ⇒ Boolean
Public: Check its existence with heartbeat key.
Returns bool
922 923 924 |
# File 'lib/rrrspec/redis_models.rb', line 922 def exist? RRRSpec.redis.exists(RRRSpec.make_key(key, 'heartbeat')) end |
#heartbeat(time) ⇒ Object
Public: Maintain heartbeat
927 928 929 930 |
# File 'lib/rrrspec/redis_models.rb', line 927 def heartbeat(time) RRRSpec.redis.setex(RRRSpec.make_key(key, 'heartbeat'), time, "alive") RRRSpec.redis.sadd(RRRSpec.make_key('rrrspec', 'worker'), key) end |
#queue_empty? ⇒ Boolean
Public: Checks whether the taskset_queue is empty.
912 913 914 |
# File 'lib/rrrspec/redis_models.rb', line 912 def queue_empty? RRRSpec.redis.llen(RRRSpec.make_key(key, 'worker_queue')) == 0 end |
#update_current_taskset(taskset) ⇒ Object
Public: Update the current taskset
892 893 894 895 896 897 898 |
# File 'lib/rrrspec/redis_models.rb', line 892 def update_current_taskset(taskset) if taskset.present? RRRSpec.redis.hset(key, 'taskset', taskset.key) else RRRSpec.redis.hset(key, 'taskset', nil) end end |