Class: QC::Queue

Inherits:
Object
  • Object
show all
Defined in:
lib/queue_classic/queue.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, top_bound = nil) ⇒ Queue

Returns a new instance of Queue.



9
10
11
12
# File 'lib/queue_classic/queue.rb', line 9

def initialize(name, top_bound=nil)
  @name = name
  @top_bound = top_bound || QC::TOP_BOUND
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



8
9
10
# File 'lib/queue_classic/queue.rb', line 8

def name
  @name
end

#top_boundObject (readonly)

Returns the value of attribute top_bound.



8
9
10
# File 'lib/queue_classic/queue.rb', line 8

def top_bound
  @top_bound
end

Instance Method Details

#countObject



45
46
47
48
49
50
51
# File 'lib/queue_classic/queue.rb', line 45

def count
  QC.log_yield(:measure => 'queue.count') do
    s = "SELECT COUNT(*) FROM #{TABLE_NAME} WHERE q_name = $1"
    r = Conn.execute(s, name)
    r["count"].to_i
  end
end

#delete(id) ⇒ Object



32
33
34
35
36
# File 'lib/queue_classic/queue.rb', line 32

def delete(id)
  QC.log_yield(:measure => 'queue.delete') do
    Conn.execute("DELETE FROM #{TABLE_NAME} where id = $1", id)
  end
end

#delete_allObject



38
39
40
41
42
43
# File 'lib/queue_classic/queue.rb', line 38

def delete_all
  QC.log_yield(:measure => 'queue.delete_all') do
    s = "DELETE FROM #{TABLE_NAME} WHERE q_name = $1"
    Conn.execute(s, name)
  end
end

#enqueue(method, *args) ⇒ Object



14
15
16
17
18
19
# File 'lib/queue_classic/queue.rb', line 14

def enqueue(method, *args)
  QC.log_yield(:measure => 'queue.enqueue') do
    s="INSERT INTO #{TABLE_NAME} (q_name, method, args) VALUES ($1, $2, $3)"
    res = Conn.execute(s, name, method, JSON.dump(args))
  end
end

#lockObject



21
22
23
24
25
26
27
28
29
30
# File 'lib/queue_classic/queue.rb', line 21

def lock
  QC.log_yield(:measure => 'queue.lock') do
    s = "SELECT * FROM lock_head($1, $2)"
    if r = Conn.execute(s, name, top_bound)
      {:id => r["id"],
        :method => r["method"],
        :args => JSON.parse(r["args"])}
    end
  end
end