X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=lib%2Frbot%2Fdbhash.rb;h=5433bf90ef0291d8b910fc07cf66aa3b09440f69;hb=8836539ba33a7507c23af1f410dbf78d36503148;hp=5ae2ba87cb0d2d8dd439e8fc59d20906d1f57647;hpb=2a96c9198c1f6e13407d0999083f6ce5e0bc06fa;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/lib/rbot/dbhash.rb b/lib/rbot/dbhash.rb index 5ae2ba87..5433bf90 100644 --- a/lib/rbot/dbhash.rb +++ b/lib/rbot/dbhash.rb @@ -1,24 +1,3 @@ -# Copyright (C) 2002 Tom Gilbert. -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies of the Software and its documentation and acknowledgment shall be -# given in the documentation and software packages that this Software was -# used. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - begin require 'bdb' rescue Exception => e @@ -71,16 +50,12 @@ module Irc def DBHash.create_db(name) debug "DBHash: creating empty db #{name}" return BDB::Hash.open(name, nil, - BDB::CREATE | BDB::EXCL | BDB::TRUNCATE, - 0600, "set_pagesize" => 1024, - "set_cachesize" => [(0), (32 * 1024), (0)]) + BDB::CREATE | BDB::EXCL, 0600) end def DBHash.open_db(name) debug "DBHash: opening existing db #{name}" - return BDB::Hash.open(name, nil, - "r+", 0600, "set_pagesize" => 1024, - "set_cachesize" => [(0), (32 * 1024), (0)]) + return BDB::Hash.open(name, nil, "r+", 0600) end end @@ -88,12 +63,17 @@ module Irc # DBTree is a BTree equivalent of DBHash, with case insensitive lookups. class DBTree - + @@env=nil # absfilename:: use +key+ as an actual filename, don't prepend the bot's # config path and don't append ".db" def initialize(bot, key, absfilename=false) @bot = bot @key = key + if @@env.nil? + #@@env = BDB::Env.open("#{@bot.botclass}", BDB::INIT_TRANSACTION | BDB::CREATE | BDB::RECOVER) + @@env = BDB::Env.open("#{@bot.botclass}", BDB::CREATE | BDB::INIT_MPOOL | BDB::RECOVER) + end + if absfilename && File.exist?(key) # db already exists, use it @db = DBTree.open_db(key) @@ -116,16 +96,14 @@ module Irc def DBTree.create_db(name) debug "DBTree: creating empty db #{name}" return BDB::CIBtree.open(name, nil, - BDB::CREATE | BDB::EXCL | BDB::TRUNCATE, - 0600, "set_pagesize" => 1024, - "set_cachesize" => [(0), (32 * 1024), (0)]) + BDB::CREATE | BDB::EXCL, + 0600, "env" => @@env) end def DBTree.open_db(name) debug "DBTree: opening existing db #{name}" return BDB::CIBtree.open(name, nil, - "r+", 0600, "set_pagesize" => 1024, - "set_cachesize" => [0, 32 * 1024, 0]) + "r+", 0600, "env" => @@env) end end