}
old.close
new.close
- File.delete("#{@bot.botclass}/registry.db")
+ File.rename("#{@bot.botclass}/registry.db", "#{@bot.botclass}/registry.db.old")
end
end
def upgrade_data2
if File.exist?("#{@bot.botclass}/plugin_registry.db")
Dir.mkdir("#{@bot.botclass}/registry") unless File.exist?("#{@bot.botclass}/registry")
- env = BDB::Env.open("#{@bot.botclass}", BDB::INIT_TRANSACTION | BDB::CREATE | BDB::RECOVER)
+ env = BDB::Env.open("#{@bot.botclass}", BDB::INIT_TRANSACTION | BDB::CREATE | BDB::RECOVER)# | BDB::TXN_NOSYNC)
dbs = Hash.new
log "upgrading previous (rbot 0.9.9 or earlier) plugin registry to new split format"
old = BDB::CIBtree.open("#{@bot.botclass}/plugin_registry.db", nil,
prefix.downcase!
# subregistries were split with a +, now they are in separate folders
if prefix.gsub!(/\+/, "/")
+ # Ok, this code needs to be put in the db opening routines
dirs = File.dirname("#{@bot.botclass}/registry/#{prefix}.db").split("/")
dirs.length.times { |i|
dir = dirs[0,i+1].join("/")+"/"
def initialize(bot, name)
@bot = bot
@name = name.downcase
+ dirs = File.dirname("#{@bot.botclass}/registry/#{@name}").split("/")
+ dirs.length.times { |i|
+ dir = dirs[0,i+1].join("/")+"/"
+ unless File.exist?(dir)
+ debug "creating subregistry directory #{dir}"
+ Dir.mkdir(dir)
+ end
+ }
@registry = DBTree.new bot, "registry/#{@name}"
@default = nil
# debug "initializing registry accessor with name #{@name}"
end
def flush
+ # debug "fushing registry #{@registry}"
@registry.flush
@registry.sync
end
def close
+ # debug "closing registry #{@registry}"
@registry.close
end
end
def sub_registry(prefix)
- return BotRegistryAccessor.new(@bot, @name + "/" + prefix)
+ return BotRegistryAccessor.new(@bot, @name + "/" + prefix.to_s)
end
# returns the number of keys in your registry namespace