using SDB; // TODO: use single interface for mcsdb and sdb // TODO: implement locking for files and for queries namespace SdbTypes { public class SdbInstance : Object { Sdb? s = null; public SdbInstance (string? host=null, int port=-1) { if (host == null) { /* use in memory sdb */ s = new Sdb (); } else if (port==-1) { /* use file sdb */ s = new Sdb (host); } else { stderr.printf ("memcache is not yet supported\n"); } } ~SdbInstance () { s = null; } public bool set_bool(string name, bool val) { return s.set (name, val.to_string ()); } public bool get_bool(string name) { return s.get (name) == "true"; } public SdbTypes.Array get_array (string name) { return new SdbTypes.Array (this, name); } public SdbTypes.List get_list (string name) { return new SdbTypes.List (this, name); } public SdbTypes.Hash get_hash (string name) { return new SdbTypes.Hash (this, name); } public SdbTypes.Stack get_stack (string name) { return new SdbTypes.Stack (this, name); } public new void @set(string key, string val) { s.set (key, val); } public new string? @get(string key) { return s.get (key); } // TODO: add getn/setn? public void unset(string key) { s.unset (key); } public uint64 incr (string key, uint64 delta=1) { return s.num_inc (key, delta); } public uint64 decr (string key, uint64 delta=1) { return s.num_dec (key, delta); } public void sync () { if (s != null) s.sync (); } } }