class LeveldbCurator
Public Class Methods
new(databases = "my_leveldb_database")
click to toggle source
# File lib/leveldb_curator.rb, line 52 def initialize(databases = "my_leveldb_database") run_daemon(9068, databases) end
Public Instance Methods
open_databases(databases)
click to toggle source
# File lib/leveldb_curator.rb, line 14 def open_databases(databases) db_list = {} databases.each do |database| dbh = LevelDB::DB.new(database) db_list[database.to_sym] = dbh end db_list end
run_daemon(port, databases)
click to toggle source
# File lib/leveldb_curator.rb, line 23 def run_daemon(port, databases) unless databases.kind_of?(Array) databases = [databases] end db_handlers = open_databases(databases) Socket.udp_server_loop("localhost", port) { |msg, msg_src| proto = Protocol.new proto.read(msg) dbh = db_handlers[proto.database.to_sym] if proto.command_word == "put" begin dbh.put(proto.query_key, proto.query_value) msg_src.reply "true" rescue => exception msg_src.reply exception.to_s end elsif proto.command_word == "get" begin msg_src.reply dbh.get(proto.query_key) rescue msg_src.reply "" end else msg_src.reply "invalid command" end } end