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(sock) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/ffi-rzmq/poll_items.rb', line 40

def delete sock
  address = sock.socket.address
  found = false
  
  each_with_index do |item, index|
    if address == item[:socket].address
      @items.delete_at index
      found = true
      @dirty = true
      clean
      break
    end
  end
  
  # these semantics are different from the usual Array#delete; returns a
  # boolean instead of the actual item or nil
  found
end

#delete_at(index) ⇒ Object



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

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

#each(&blk) ⇒ Object



70
71
72
73
74
75
76
77
78
# File 'lib/ffi-rzmq/poll_items.rb', line 70

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



80
81
82
83
84
85
86
87
88
# File 'lib/ffi-rzmq/poll_items.rb', line 80

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



90
91
92
93
94
95
# File 'lib/ffi-rzmq/poll_items.rb', line 90

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



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

def to_s(); inspect; end