Class: ZMQ::PollItems

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/ffi-rzmq/poll_items.rb

Instance Method Summary collapse

Constructor Details

#initializePollItems

Returns a new instance of PollItems.



6
7
8
9
10
# File 'lib/ffi-rzmq/poll_items.rb', line 6

def initialize
  @element_size = LibZMQ::PollItem.size
  @store = nil
  @items = []
end

Instance Method Details

#<<(obj) ⇒ Object Also known as: push



34
35
36
37
# File 'lib/ffi-rzmq/poll_items.rb', line 34

def <<(obj)
  @dirty = true
  @items << obj
end

#addressObject



16
17
18
19
# File 'lib/ffi-rzmq/poll_items.rb', line 16

def address
  clean
  @store
end

#delete_at(index) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/ffi-rzmq/poll_items.rb', line 40

def delete_at index
  unless @items.empty?
    @items.delete_at index
    @dirty = true
    clean
  end
end

#each(&blk) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/ffi-rzmq/poll_items.rb', line 48

def each &blk
  clean
  index = 0
  until index >= @items.size do
    struct = get index
    yield struct
    index += 1
  end
end

#each_with_index(&blk) ⇒ Object



58
59
60
61
62
63
64
65
66
# File 'lib/ffi-rzmq/poll_items.rb', line 58

def each_with_index &blk
  clean
  index = 0
  until index >= @items.size do
    struct = get index
    yield struct, index
    index += 1
  end
end

#empty?Boolean

Returns:

  • (Boolean)


14
# File 'lib/ffi-rzmq/poll_items.rb', line 14

def empty?; @items.empty?; end

#get(index) ⇒ Object Also known as: []



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/ffi-rzmq/poll_items.rb', line 21

def get index
  unless @items.empty? || index.nil?
    clean

    # pointer arithmetic in ruby! whee!
    pointer = @store + (@element_size * index)

    # cast the memory to a PollItem
    LibZMQ::PollItem.new pointer
  end
end

#inspectObject



68
69
70
71
72
73
# File 'lib/ffi-rzmq/poll_items.rb', line 68

def inspect
  clean
  str = ""
  each { |item| str << "ptr [#{item[:socket]}], events [#{item[:events]}], revents [#{item[:revents]}], " }
  str.chop.chop
end

#sizeObject



12
# File 'lib/ffi-rzmq/poll_items.rb', line 12

def size; @items.size; end

#to_sObject



75
# File 'lib/ffi-rzmq/poll_items.rb', line 75

def to_s(); inspect; end