Parent

Class/Module Index [+]

Quicksearch

Irc::DBTree

DBTree is a BTree equivalent of DBHash, with case insensitive lookups.


DBTree is a BTree equivalent of DBHash, with case insensitive lookups.

Public Class Methods

cleanup_env() click to toggle source
# File lib/rbot/registry/tc.rb, line 170
def DBTree.cleanup_env()
  # no-op
end
cleanup_logs() click to toggle source
# File lib/rbot/registry/tc.rb, line 162
def DBTree.cleanup_logs()
  # no-op
end
create_db(name) click to toggle source
# File lib/rbot/registry/tc.rb, line 146
def DBTree.create_db(name)
  debug "DBTree: creating empty db #{name}"
  db = TokyoCabinet::CIBDB.new
  res = db.open(name, TokyoCabinet::CIBDB::OREADER | TokyoCabinet::CIBDB::OCREAT | TokyoCabinet::CIBDB::OWRITER)
   warning "DBTree: creating empty db #{name}: #{db.errmsg(db.ecode) unless res}"
  return db
end
new(bot, key, absfilename=false) click to toggle source

absfilename

use key as an actual filename, don't prepend the bot's config path and don't append ".db"

# File lib/rbot/registry/tc.rb, line 107
def initialize(bot, key, absfilename=false)
  @bot = bot
  @key = key

  relfilename = @bot.path key
  relfilename << '.tdb'

  if absfilename && File.exist?(key)
    # db already exists, use it
    @db = DBTree.open_db(key)
  elsif absfilename
    # create empty db
    @db = DBTree.create_db(key)
  elsif File.exist? relfilename
    # db already exists, use it
    @db = DBTree.open_db relfilename
  else
    # create empty db
    @db = DBTree.create_db relfilename
  end
  oldbasename = (absfilename ? key : relfilename).gsub(/\.tdb$/, ".db")
  if File.exists? oldbasename and defined? BDB
    # upgrading
    warning "Upgrading old database #{oldbasename}..."
    oldb = ::BDB::Btree.open(oldbasename, nil, "r", 0600)
    oldb.each_key do |k|
      @db.outlist k
      @db.putlist k, (oldb.duplicates(k, false))
    end
    oldb.close
    File.rename oldbasename, oldbasename+".bak"
  end
  @db
end
open_db(name) click to toggle source
# File lib/rbot/registry/tc.rb, line 154
def DBTree.open_db(name)
  debug "DBTree: opening existing db #{name}"
  db = TokyoCabinet::CIBDB.new
  res = db.open(name, TokyoCabinet::CIBDB::OREADER | TokyoCabinet::CIBDB::OWRITER)
   warning "DBTree:opening db #{name}: #{db.errmsg(db.ecode) unless res}"
  return db
end
stats() click to toggle source
# File lib/rbot/registry/tc.rb, line 166
def DBTree.stats()
  # no-op
end

Public Instance Methods

method_missing(method, *args, &block) click to toggle source
# File lib/rbot/registry/tc.rb, line 142
def method_missing(method, *args, &block)
  return @db.send(method, *args, &block)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.