Method: Aerospike::AdminCommand#write_privileges

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

#write_privileges(privileges) ⇒ Object

[View source]

244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
# File 'lib/aerospike/command/admin_command.rb', line 244

def write_privileges(privileges)
  offset = @data_offset
  @data_offset += FIELD_HEADER_SIZE
  write_byte(privileges.size)

  for privilege in privileges
    write_byte(privilege.to_code)
    if privilege.can_scope?
      if privilege.set_name.to_s.size > 0 && privilege.namespace.to_s.size == 0
        raise Aerospike::Exceptions::Aerospike.new(Aerospike::ResultCode::INVALID_PRIVILEGE, "Admin privilege #{privilege.namespace} has a set scope with an empty namespace")
      end

      write_str(privilege.namespace.to_s)
      write_str(privilege.set_name.to_s)
    else
      if privilege.set_name.to_s.bytesize > 0 || privilege.namespace.to_s.bytesize > 0
        raise Aerospike::Exceptions::Aerospike.new(Aerospike::ResultCode::INVALID_PRIVILEGE, "Admin global privilege #{privilege} can't have a namespace or set")
      end
    end
  end

  size = @data_offset - offset - FIELD_HEADER_SIZE
  @data_offset = offset
  write_field_header(PRIVILEGES, size)
  @data_offset += size
end