class Ccp::Storage
Constants
- NotFound
Attributes
codec[R]
kvs[R]
path[R]
source[R]
Public Class Methods
load(path)
click to toggle source
# File lib/ccp/storage.rb, line 5 def self.load(path) array = path.to_s.split(".") kvs = Ccp::Kvs[array.pop] codec = Ccp::Serializers[array.pop] return new(path, kvs, codec) end
new(source, kvs, codec)
click to toggle source
# File lib/ccp/storage.rb, line 15 def initialize(source, kvs, codec) @source = source @codec = codec @path = Pathname(source) @kvs = kvs.new(source).codec!(codec) @tables = {} end
Public Instance Methods
close()
click to toggle source
# File lib/ccp/storage.rb, line 56 def close @tables.each_pair do |_,kvs| kvs.close end @tables = {} end
close_table(name)
click to toggle source
# File lib/ccp/storage.rb, line 46 def close_table(name) t = @tables[name.to_s] if t && t.close @tables.delete(name.to_s) true else false end end
read()
click to toggle source
kvs
# File lib/ccp/storage.rb, line 66 def read if @path.directory? tables hash = {} @tables.each_pair do |k, kvs| hash[k] = kvs.read end return hash else return @kvs.read end end
table(name, file = nil)
click to toggle source
# File lib/ccp/storage.rb, line 39 def table(name, file = nil) @tables[name.to_s] ||= ( file ||= "%s.%s.%s" % [name, @codec.ext, @kvs.ext] @kvs.class.new((@path + file).to_s).codec!(@codec) ) end
table_names()
click to toggle source
meta kvs
# File lib/ccp/storage.rb, line 26 def table_names tables # force to update @tables @tables.keys end
tables()
click to toggle source
# File lib/ccp/storage.rb, line 31 def tables files = Dir.chdir(@path) { Dir["**/*.#{@kvs.ext}"] } files.map{|file| name = file.sub(/(\.#{@codec.ext})?(\.#{@kvs.ext})?$/, '') table(name, file) } end