Class: Fairy::CBarrier::CBarrierMemoryBuffer

Inherits:
CBarrierBuffer show all
Defined in:
lib/fairy/master/c-barrier.rb

Instance Attribute Summary

Attributes inherited from Fairy::CIOFilter

#input

Attributes included from Fairy::CInputtable

#input

Instance Method Summary collapse

Methods included from Factory

#create, extended, #init_fact, #register_mode

Methods inherited from Fairy::CIOFilter

#node_class, #output=

Methods included from Fairy::CInputtable

#break_running, #inputtable?

Methods inherited from Fairy::CFilter

#abort_create_node, #add_node, #assgin_number_of_nodes?, #bind_export, #break_create_node, #break_running, #create_and_add_node, #create_import, #create_node, #create_nodes, #def_job_pool_variable, #each_assigned_filter, #each_export_by, #each_node, #each_node_exist_only, #handle_exception, #input, #job_pool_dict, #job_pool_variable, #njob_creation_params, #nodes, #number_of_nodes, #number_of_nodes=, #pool_dict, #postmapping_policy, #start_create_nodes, #start_export, #start_watch_node_status, #update_status, watch_status, watch_status=, #watch_status?

Constructor Details

#initialize(bbarrier, mode, opts = nil) ⇒ CBarrierMemoryBuffer

Returns a new instance of CBarrierMemoryBuffer.



212
213
214
# File 'lib/fairy/master/c-barrier.rb', line 212

def initialize(bbarrier, mode, opts=nil)
  super(bbarrier, mode, bbarrier.instance_eval{@controller}, opts)
end

Instance Method Details

#all_data_imported?Boolean

Returns:

  • (Boolean)


229
230
231
232
233
234
235
236
# File 'lib/fairy/master/c-barrier.rb', line 229

def all_data_imported?
  @nodes_status_mutex.synchronize do
    while !all_node_data_imported?
      @nodes_status_cv.wait(@nodes_status_mutex)
    end
  end
  true
end

#all_node_data_arrived?Boolean

Returns:

  • (Boolean)


246
247
248
249
250
251
252
253
254
255
# File 'lib/fairy/master/c-barrier.rb', line 246

def all_node_data_arrived?
  return false unless @number_of_nodes

  data_arrived = true
  each_node(:exist_only) do |node|
    st = @nodes_status[node]
    data_arrived &&= [:ST_ACTIVATE, :ST_ALL_IMPORTED, :ST_FINISH, :ST_EXPORT_FINISH, :ST_WAIT_EXPORT_FINISH].include?(st)
  end
  data_arrived
end

#all_node_data_imported?Boolean

Returns:

  • (Boolean)


257
258
259
260
261
262
263
264
265
266
267
# File 'lib/fairy/master/c-barrier.rb', line 257

def all_node_data_imported?
  return false unless @number_of_nodes

  all_data_imported = true
  each_node(:exist_only) do |node|
    st = @nodes_status[node]
    s = [:ST_ALL_IMPORTED, :ST_FINISH, :ST_EXPORT_FINISH, :ST_WAIT_EXPORT_FINISH].include?(st)
    all_data_imported &&= [:ST_ALL_IMPORTED, :ST_FINISH, :ST_EXPORT_FINISH, :ST_WAIT_EXPORT_FINISH].include?(st)
  end
  all_data_imported
end

#data_arrived?Boolean

Returns:

  • (Boolean)


220
221
222
223
224
225
226
227
# File 'lib/fairy/master/c-barrier.rb', line 220

def data_arrived?
  @nodes_status_mutex.synchronize do
    while !all_node_data_arrived?
      @nodes_status_cv.wait(@nodes_status_mutex)
    end
  end
  true
end

#node_arrived?Boolean

Returns:

  • (Boolean)


216
217
218
# File 'lib/fairy/master/c-barrier.rb', line 216

def node_arrived?
  number_of_nodes
end

#node_class_nameObject



238
239
240
# File 'lib/fairy/master/c-barrier.rb', line 238

def node_class_name
  "PBarrierMemoryBuffer"
end

#wait_exportObject



242
243
244
# File 'lib/fairy/master/c-barrier.rb', line 242

def wait_export
  @bbarrier.wait_export
end