Class: Mmdb::DB

Inherits:
Object
  • Object
show all
Defined in:
lib/mmdb/db.rb

Defined Under Namespace

Classes: InvalidFileFormat

Instance Method Summary collapse

Constructor Details

#initialize(file_path) ⇒ DB

Returns a new instance of DB.



5
6
7
# File 'lib/mmdb/db.rb', line 5

def initialize(file_path)
  @file_path = file_path
end

Instance Method Details

#query(ip_addr) ⇒ Object

Raises:



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/mmdb/db.rb', line 9

def query(ip_addr)
  validate_database!
  node = 0
  (decoder.start_index...128).each do |i|
    flag = (ip_addr >> (127 - i)) & 1
    next_node = decoder.read(node: node, flag: flag)
    raise InvalidFileFormat if next_node.zero?
    if next_node < decoder.node_count
      node = next_node
    else
      return decode_node(next_node).value
    end
  end
  raise InvalidFileFormat
end