Class: Bran::LibUV::Reactor::Collections::Write

Inherits:
AbstractSister show all
Defined in:
lib/bran/libuv/reactor/collections.rb

Instance Attribute Summary

Attributes inherited from AbstractSister

#item_pool, #sister

Instance Method Summary collapse

Methods inherited from AbstractSister

#bond_with, #drop_item, #make_item

Methods inherited from Abstract

#drop_item, #invoke_by_addr, #invoke_by_ident, #invoke_handler, #item_by_ident, #make_item, #pop, #push

Constructor Details

#initializeWrite

Returns a new instance of Write.



175
176
177
178
179
# File 'lib/bran/libuv/reactor/collections.rb', line 175

def initialize(*)
  super
  @callback    = FFI.uv_poll_cb(&@reactor.method(:_write_callback))
  @rw_callback = FFI.uv_poll_cb(&@reactor.method(:_rw_callback))
end

Instance Method Details

#concrete_alloc_itemObject



181
182
183
# File 'lib/bran/libuv/reactor/collections.rb', line 181

def concrete_alloc_item
  @item_pool.pop || FFI.uv_poll_alloc
end

#concrete_release_item(item) ⇒ Object



185
186
187
# File 'lib/bran/libuv/reactor/collections.rb', line 185

def concrete_release_item(item)
  @item_pool << item
end

#concrete_sister_share_item(ident, item) ⇒ Object



202
203
204
205
206
# File 'lib/bran/libuv/reactor/collections.rb', line 202

def concrete_sister_share_item(ident, item)
  Util.error_check "starting the poll writable + writable item",
    FFI.uv_poll_start(item,
      FFI::UV_READABLE | FFI::UV_WRITABLE, @rw_callback)
end

#concrete_sister_unshare_item(ident, item) ⇒ Object



208
209
210
211
# File 'lib/bran/libuv/reactor/collections.rb', line 208

def concrete_sister_unshare_item(ident, item)
  Util.error_check "restarting the poll writable item",
    FFI.uv_poll_start(item, FFI::UV_WRITABLE, @callback)
end

#concrete_start_item(ident, item) ⇒ Object



189
190
191
192
193
194
195
# File 'lib/bran/libuv/reactor/collections.rb', line 189

def concrete_start_item(ident, item)
  Util.error_check "creating the poll writable item",
    FFI.uv_poll_init(@reactor.ptr, item, ident)
  
  Util.error_check "starting the poll writable item",
    FFI.uv_poll_start(item, FFI::UV_WRITABLE, @callback)
end

#concrete_stop_item(ident, item) ⇒ Object



197
198
199
200
# File 'lib/bran/libuv/reactor/collections.rb', line 197

def concrete_stop_item(ident, item)
  Util.error_check "stopping the poll writable item",
    FFI.uv_poll_stop(item)
end