Method: Corosync::CPG#members

Defined in:
lib/corosync/cpg.rb

#membersCorosync::CPG::MemberList

Gets a list of members currently in the group



227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
# File 'lib/corosync/cpg.rb', line 227

def members
  members = Corosync::CPG::MemberList.new

  cpg_name = Corosync::CpgName.new
  cpg_name[:value] = @group
  cpg_name[:length] = @group.size

  iteration_handle_ptr = FFI::MemoryPointer.new(Corosync.find_type(:cpg_iteration_handle_t))
  Corosync.cs_send(:cpg_iteration_initialize, @handle, Corosync::CPG_ITERATION_ONE_GROUP, cpg_name, iteration_handle_ptr)
  iteration_handle = iteration_handle_ptr.read_uint64

  begin
    iteration_description = Corosync::CpgIterationDescriptionT.new
    begin
      loop do
        Corosync.cs_send(:cpg_iteration_next, iteration_handle, iteration_description)
        members << Corosync::CPG::Member.new(iteration_description)
      end
    rescue Corosync::NoSectionsError
      # signals end of iteration
    end
  ensure
    Corosync.cs_send(:cpg_iteration_finalize, iteration_handle)
  end

  members
end