Class: Bran::LibUV::Reactor::Collections::Signal

Inherits:
Abstract
  • Object
show all
Defined in:
lib/bran/libuv/reactor/collections.rb

Instance Method Summary collapse

Methods inherited from Abstract

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

Constructor Details

#initializeSignal

Returns a new instance of Signal.



215
216
217
218
219
# File 'lib/bran/libuv/reactor/collections.rb', line 215

def initialize(*)
  super
  @item_pool = []
  @callback  = FFI.uv_signal_cb(&@reactor.method(:_signal_callback))
end

Instance Method Details

#concrete_alloc_itemObject



221
222
223
# File 'lib/bran/libuv/reactor/collections.rb', line 221

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

#concrete_release_item(item) ⇒ Object



225
226
227
# File 'lib/bran/libuv/reactor/collections.rb', line 225

def concrete_release_item(item)
  @item_pool << item
end

#concrete_start_item(ident, item) ⇒ Object



229
230
231
232
233
234
235
236
# File 'lib/bran/libuv/reactor/collections.rb', line 229

def concrete_start_item(ident, item)
  # TODO: need not init existing signal item?
  Util.error_check "creating the signal handler item",
    FFI.uv_signal_init(@reactor.ptr, item)
  
  Util.error_check "starting the signal handler item",
    FFI.uv_signal_start(item, @callback, ident)
end

#concrete_stop_item(ident, item) ⇒ Object



238
239
240
241
# File 'lib/bran/libuv/reactor/collections.rb', line 238

def concrete_stop_item(ident, item)
  Util.error_check "stopping the signal handler item",
    FFI.uv_signal_stop(item)
end