コード例 #1
0
 public override void Write(int flowID, IEnumerable <KeyValuePair <long, Tick> > flow)
 {
     lock (SyncRoot)
     {
         foreach (var kv in flow)
         {
             database.Insert(Direct(kv.Key), FromTick(kv.Value), HamConst.HAM_OVERWRITE);
         }
     }
 }
コード例 #2
0
        private void Recovery()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            env.Create("ntest.db", HamConst.HAM_ENABLE_RECOVERY);
            db = env.CreateDatabase(1);

            byte[] k = new byte[5];
            byte[] r = new byte[5];
            db.Insert(k, r);
            db.Close();
            env.Close();
        }
コード例 #3
0
 private void InsertKeyOverwrite()
 {
     Hamster.Environment env = new Hamster.Environment();
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     try {
         env.Create("ntest.db");
         db = env.CreateDatabase(1);
         db.Insert(k, r);
         r[0] = 1;
         db.Insert(k, r, HamConst.HAM_OVERWRITE);
         byte[] r2 = db.Find(k);
         checkEqual(r, r2);
         db.Close();
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
 }
コード例 #4
0
 private void InsertKeyNegative()
 {
     Hamster.Environment env = new Hamster.Environment();
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     try {
         env.Create("ntest.db");
         db = env.CreateDatabase(1);
         db.Insert(k, r);
         db.Insert(k, r);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_DUPLICATE_KEY, e.ErrorCode);
     }
     db.Close();
     env.Close();
 }
コード例 #5
0
 private void InsertKeyInvalidParam()
 {
     Hamster.Environment env = new Hamster.Environment();
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     env.Create("ntest.db");
     db = env.CreateDatabase(1);
     try {
         db.Insert(null, r);
     }
     catch (NullReferenceException) {
     }
     try {
         db.Insert(k, null);
     }
     catch (NullReferenceException) {
     }
     try {
         db.Insert(k, r, 9999);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
     }
     db.Close();
     env.Close();
 }
コード例 #6
0
        private void InsertKey()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            byte[] k = new byte[5];
            byte[] r1 = new byte[5];
            byte[] r2;
            try {
                env.Create("ntest.db");
                db = env.CreateDatabase(1);
                k[0] = 1;
                r1[0] = 1;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0] = 2;
                r1[0] = 2;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0] = 3;
                r1[0] = 3;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);
                db.Close();
                env.Close();
            }
            catch (DatabaseException e) {
                Assert.Fail("unexpected exception " + e);
            }
        }
コード例 #7
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
        public void GetKeyCount()
        {
            Database db = new Database();
            db.Create("ntest.db");

            byte[] k = new byte[5];
            byte[] r = new byte[5];
            Assert.AreEqual(0, db.GetKeyCount());
            db.Insert(k, r);
            Assert.AreEqual(1, db.GetKeyCount());
            k[0] = 1;
            db.Insert(k, r);
            Assert.AreEqual(2, db.GetKeyCount());
            db.Close();
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: alepharchives/hamsterdb
        static void Main(string[] args)
        {
            byte[] key = new byte[5];
            byte[] record = new byte[5];
            Database db = new Database();

            /*
             * first, create a new Database
             */
            db.Create("test.db");

            /*
             * now we can insert, delete or lookup values in the Database
             *
             * for our test program, we just insert a few values, then look them
             * up, then delete them and try to look them up again (which will fail).
             */
            for (int i = 0; i < LOOP; i++) {
                key[0] = (byte)i;
                record[0] = (byte)i;
                db.Insert(key, record);
            }

            /*
             * now look up all values
             */
            for (int i = 0; i < LOOP; i++) {
                key[0] = (byte)i;
                byte[] r = db.Find(key);

                /*
                 * check if the value is ok
                 */
                if (r[0] != (byte)i) {
                    Console.Out.WriteLine("db.Find() returned bad value");
                    return;
                }
            }

            /*
             * close the Database handle, then re-open it (just to demonstrate how
             * to open a Database file)
             */
            db.Close();
            db.Open("test.db");

            /*
             * now erase all values
             */
            for (int i = 0; i < LOOP; i++) {
                key[0] = (byte)i;
                db.Erase(key);
            }

            /*
             * once more we try to find all values... every db.Find() call must
             * now fail with HAM_KEY_NOT_FOUND
             */
            for (int i = 0; i < LOOP; i++) {
                key[0] = (byte)i;

                try {
                    byte[] r = db.Find(key);
                }
                catch (DatabaseException e) {
                    if (e.ErrorCode != HamConst.HAM_KEY_NOT_FOUND) {
                        Console.Out.WriteLine("db.Find() returned error " + e);
                        return;
                    }
                }
            }

            /*
             * We're done! No need to close the Database handle - it's closed automatically
             */
            Console.Out.WriteLine("Success!");
        }
コード例 #9
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
 public void SetPrefixComparator()
 {
     Database db = new Database();
     byte[] k = new byte[25];
     byte[] r = new byte[25];
     compareCounter = 0;
     try {
         db.Create("ntest.db");
         db.SetPrefixCompareFunc(new
             PrefixCompareFunc(MyPrefixCompareFunc));
         db.Insert(k, r);
         k[0] = 1;
         db.Insert(k, r);
         db.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
     Assert.AreEqual(1, compareCounter);
 }
コード例 #10
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
 public void SetDuplicateComparator()
 {
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     compareCounter = 0;
     try
     {
         db.Create("ntest.db", HamConst.HAM_ENABLE_DUPLICATES|HamConst.HAM_SORT_DUPLICATES);
         db.SetDuplicateCompareFunc(new DuplicateCompareFunc(MyDupeCompareFunc));
         db.Insert(k, r);
         r[0] = 1;
         db.Insert(k, r, HamConst.HAM_DUPLICATE);
         db.Close();
     }
     catch (DatabaseException e)
     {
         Assert.Fail("unexpected exception " + e);
     }
     Assert.AreEqual(1, compareCounter);
 }
コード例 #11
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
        public void Recovery()
        {
            Database db = new Database();
            db.Create("ntest.db", HamConst.HAM_ENABLE_RECOVERY);

            byte[] k = new byte[5];
            byte[] r = new byte[5];
            db.Insert(k, r);
            db.Close();
        }
コード例 #12
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
 public void InsertKeyOverwrite()
 {
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     try {
         db.Create("ntest.db");
         db.Insert(k, r);
         r[0] = 1;
         db.Insert(k, r, HamConst.HAM_OVERWRITE);
         byte[] r2 = db.Find(k);
         checkEqual(r, r2);
         db.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
 }
コード例 #13
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
 public void InsertKeyNegative()
 {
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     try {
         db.Create("ntest.db");
         db.Insert(k, r);
         db.Insert(k, r);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_DUPLICATE_KEY, e.ErrorCode);
     }
     db.Close();
 }
コード例 #14
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
 public void InsertKeyInvalidParam()
 {
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     db.Create("ntest.db");
     try {
         db.Insert(null, r);
     }
     catch (NullReferenceException) {
     }
     try {
         db.Insert(k, null);
     }
     catch (NullReferenceException) {
     }
     try {
         db.Insert(k, r, 9999);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_INV_PARAMETER, e.ErrorCode);
     }
     db.Close();
 }
コード例 #15
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
        public void InsertKey()
        {
            Database db = new Database();
            byte[] k = new byte[5];
            byte[] r1 = new byte[5];
            byte[] r2;
            try {
                db.Create("ntest.db");
                k[0] = 1;
                r1[0] = 1;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0] = 2;
                r1[0] = 2;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0] = 3;
                r1[0] = 3;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);
                db.Close();
            }
            catch (DatabaseException e) {
                Assert.Fail("unexpected exception " + e);
            }
        }
コード例 #16
0
        private void SetComparator()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            byte[] k = new byte[5];
            byte[] r = new byte[5];
            Parameter[] param = new Parameter[1];
            param[0] = new Parameter();
            param[0].name = HamConst.HAM_PARAM_KEY_TYPE;
            param[0].value = HamConst.HAM_TYPE_CUSTOM;

            compareCounter = 0;
            try {
                env.Create("ntest.db");
                db = env.CreateDatabase(1, 0, param);
                db.SetCompareFunc(new CompareFunc(MyCompareFunc));
                db.Insert(k, r);
                k[0] = 1;
                db.Insert(k, r);
                db.Close();
                env.Close();
            }
            catch (DatabaseException e) {
                Assert.Fail("unexpected exception " + e);
            }
            Assert.AreEqual(1, compareCounter);
        }
コード例 #17
0
ファイル: CursorTest.cs プロジェクト: mathieurodic/hamsterdb
        private void ApproxMatching()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            byte[] k1 = new byte[5];
            byte[] r1 = new byte[5];
            k1[0] = 1; r1[0] = 1;
            byte[] k2 = new byte[5];
            byte[] r2 = new byte[5];
            k2[0] = 2; r2[0] = 2;
            byte[] k3 = new byte[5];
            byte[] r3 = new byte[5];
            k3[0] = 3; r3[0] = 3;
            try
            {
                env.Create("ntest.db");
                db = env.CreateDatabase(1);
                db.Insert(k1, r1);
                db.Insert(k2, r2);
                db.Insert(k3, r3);

                Cursor c = new Cursor(db);
                byte[] r = c.Find(k2, HamConst.HAM_FIND_GT_MATCH);
                checkEqual(r, r3);
                checkEqual(k2, k3);
                k2[0] = 2;
                r = c.Find(k2, HamConst.HAM_FIND_GT_MATCH);
                checkEqual(r, r1);
                checkEqual(k2, k1);
                db.Close();
                env.Close();
            }
            catch (DatabaseException e)
            {
                Assert.Fail("unexpected exception " + e);
            }
        }
コード例 #18
0
        private void EraseKeyTwice()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            byte[] k = new byte[5];
            byte[] r = new byte[5];

            env.Create("ntest.db");
            db = env.CreateDatabase(1);
            db.Insert(k, r);
            byte[] r2 = db.Find(k);
            checkEqual(r, r2);
            db.Erase(k);

            try {
                db.Erase(k);
            }
            catch (DatabaseException e) {
                Assert.AreEqual(HamConst.HAM_KEY_NOT_FOUND, e.ErrorCode);
            }
            db.Close();
            env.Close();
        }
コード例 #19
0
        private void GetKeyCount()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            env.Create("ntest.db");
            db = env.CreateDatabase(1);

            byte[] k = new byte[5];
            byte[] r = new byte[5];
            Assert.AreEqual(0, db.GetKeyCount());
            db.Insert(k, r);
            Assert.AreEqual(1, db.GetKeyCount());
            k[0] = 1;
            db.Insert(k, r);
            Assert.AreEqual(2, db.GetKeyCount());
            db.Close();
            env.Close();
        }
コード例 #20
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
        public void EraseKeyTwice()
        {
            Database db = new Database();
            byte[] k = new byte[5];
            byte[] r = new byte[5];

            db.Create("ntest.db");
            db.Insert(k, r);
            byte[] r2 = db.Find(k);
            checkEqual(r, r2);
            db.Erase(k);

            try {
                db.Erase(k);
            }
            catch (DatabaseException e) {
                Assert.AreEqual(HamConst.HAM_KEY_NOT_FOUND, e.ErrorCode);
            }
            db.Close();
        }