Method: Aerospike::AdminCommand#parse_users

Defined in:
lib/aerospike/command/admin_command.rb

#parse_users(receive_size) ⇒ Object

[View source]

414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
# File 'lib/aerospike/command/admin_command.rb', line 414

def parse_users(receive_size)
  @data_offset = 0
  list = []

  while @data_offset < receive_size
    result_code = @data_buffer.read(@data_offset+1)

    if result_code != 0
      return (result_code == QUERY_END ? -1 : result_code)
    end

    user_roles = UserRoles.new
    field_count = @data_buffer.read(@data_offset+3)
    @data_offset += HEADER_REMAINING

    i = 0
    while i  < field_count
      len = @data_buffer.read_int32(@data_offset)
      @data_offset += 4
      id = @data_buffer.read(@data_offset)
      @data_offset += 1
      len -= 1

      case id
      when USER
        user_roles.user = @data_buffer.read(@data_offset, len)
        @data_offset += len
      when ROLES
        parse_roles(user_roles)
      when READ_INFO
        user_roles.read_info = parse_info
      when WRITE_INFO
        user_roles.write_info = parse_info
      when CONNECTIONS
        user_roles.conns_in_use = @data_buffer.read_int32(@data_offset)
        @data_offset += len
      else
        @data_offset += len
      end

      i = i.succ
    end

    next if user_roles.user == "" && user_roles.roles == nil

    user_roles.roles = [] if user_roles.roles == nil
    list << user_roles
  end

  return 0, list
end