Flay Report said, i have duplication in my code
This commit is contained in:
parent
f04fcac66d
commit
b9d52726ae
|
@ -16,4 +16,10 @@ module SBDB
|
|||
def queue( *p) Queue.new *p end
|
||||
def unknown( *p) Unknown.new *p end
|
||||
alias open_db unknown
|
||||
|
||||
def raise_barrier *ps, &e
|
||||
e.call *ps
|
||||
rescue Object
|
||||
$stderr.puts [$!.class,$!,$!.backtrace].inspect
|
||||
end
|
||||
end
|
||||
|
|
|
@ -46,20 +46,14 @@ module SBDB
|
|||
alias del delete
|
||||
|
||||
class << self
|
||||
def new *p, &e
|
||||
x = super *p
|
||||
return x unless e
|
||||
begin e.call x
|
||||
def new *ps, &exe
|
||||
ret = obj = super( *ps)
|
||||
begin ret = e.call obj
|
||||
ensure
|
||||
begin x.sync
|
||||
rescue Object
|
||||
$stderr.puts [$!.class,$!,$!.backtrace].inspect
|
||||
end
|
||||
begin x.close
|
||||
rescue Object
|
||||
$stderr.puts [$!.class,$!,$!.backtrace].inspect
|
||||
end
|
||||
end
|
||||
SBDB::raise_barrier obj.method(:sync)
|
||||
SBDB::raise_barrier obj.method(:close)
|
||||
end if exe
|
||||
ret
|
||||
end
|
||||
alias open new
|
||||
end
|
||||
|
@ -119,7 +113,7 @@ module SBDB
|
|||
end
|
||||
TYPES[DB::HASH] = Hash
|
||||
|
||||
class Recno < DB
|
||||
module Arrayisch
|
||||
def [] k
|
||||
super [k].pack('I')
|
||||
end
|
||||
|
@ -132,25 +126,18 @@ module SBDB
|
|||
@db.put _txn(txn), "\0\0\0\0", v, Bdb::DB_APPEND
|
||||
end
|
||||
end
|
||||
|
||||
class Recno < DB
|
||||
extend Arrayisch
|
||||
end
|
||||
Array = Recno
|
||||
TYPES[DB::RECNO] = Recno
|
||||
|
||||
class Queue < DB
|
||||
def [] k
|
||||
super [k].pack('I')
|
||||
end
|
||||
|
||||
def []= k, v
|
||||
super [k].pack('I'), v
|
||||
end
|
||||
|
||||
class Queue < Arrayisch
|
||||
extend Arrayisch
|
||||
def unshift txn = nil
|
||||
@db.get _txn(txn), "\0\0\0\0", nil, Bdb::DB_CONSUME
|
||||
end
|
||||
|
||||
def push v, txn = nil
|
||||
@db.put _txn(txn), "\0\0\0\0", v, Bdb::DB_APPEND
|
||||
end
|
||||
end
|
||||
TYPES[DB::QUEUE] = Queue
|
||||
end
|
||||
|
|
|
@ -75,11 +75,7 @@ module SBDB
|
|||
def self.new *args
|
||||
obj = r = super( *args)
|
||||
begin r = yield obj
|
||||
ensure
|
||||
begin obj.close
|
||||
rescue Object
|
||||
$stderr.puts [$!.class,$!,$!.backtrace].inspect
|
||||
end
|
||||
ensure SBDB::raise_barrier obj.method(:close)
|
||||
end if block_given?
|
||||
r
|
||||
end
|
||||
|
@ -112,9 +108,10 @@ module SBDB
|
|||
def [] file, *p, &e
|
||||
p.push ::Hash.new unless ::Hash === p.last
|
||||
p.last[:env] = self
|
||||
name = String === p[0] ? p[0] : p.last[:name]
|
||||
flags = Fixnum === p[1] ? p[1] : p.last[:flags]
|
||||
type = Fixnum === p[2] ? p[2] : p.last[:type]
|
||||
name, flags, type =
|
||||
String === p[0] ? p[0] : p.last[:name],
|
||||
Fixnum === p[1] ? p[1] : p.last[:flags],
|
||||
Fixnum === p[2] ? p[2] : p.last[:type]
|
||||
@dbs[ [file, name, flags | CREATE]] ||= (type || SBDB::Unknown).new file, *p, &e
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue