Exemplo n.º 1
0
        /// <summary>
        /// under lock_operations
        /// Copyies from distribution silo table and puts in StateLog table
        /// </summary>
        /// <returns></returns>
        public StateLogEntrySuggestion AddNextEntryToStateLogByLeader()
        {
            var suggest = GetNextLogEntryToBeDistributed();

            if (suggest == null)
            {
                return(null);
            }

            //Restoring current values
            PreviousStateLogId   = suggest.StateLogEntry.PreviousStateLogId;
            PreviousStateLogTerm = suggest.StateLogEntry.PreviousStateLogTerm;
            StateLogId           = suggest.StateLogEntry.Index;
            StateLogTerm         = suggest.StateLogEntry.Term;

            if (rn.entitySettings.DelayedPersistenceIsActive)
            {
                sleCache[suggest.StateLogEntry.Index] = new Tuple <ulong, StateLogEntry>(suggest.StateLogEntry.Term, suggest.StateLogEntry);
            }
            else
            {
                if (rn.entitySettings.InMemoryEntity)
                {
                    lock (inMem.Sync)
                    {
                        inMem.Add(suggest.StateLogEntry.Index, suggest.StateLogEntry.Term, suggest.StateLogEntry);
                    }
                }
                else
                {
                    using (var t = this.rn.db.GetTransaction())
                    {
                        t.Insert <byte[], byte[]>(tblStateLogEntry, new byte[] { 1 }.ToBytes(suggest.StateLogEntry.Index, suggest.StateLogEntry.Term), suggest.StateLogEntry.SerializeBiser());
                        t.Commit();
                    }
                }
            }

            return(suggest);
        }
        /// <summary>
        ///
        /// </summary>
        internal static void test1()
        {
            //IndexTermDict<string>.test1();
            //Console.ReadLine();
            //return;


            IndexTermDict <string> inMem = new IndexTermDict <string>();
            ulong index = 1;
            ulong term  = 1;

            inMem.Add(index, term, index.ToString() + "_" + term.ToString());

            index = 2;
            term  = 1;
            inMem.Add(index, term, index.ToString() + "_" + term.ToString());

            index = 2;
            term  = 2;
            inMem.Add(index, term, index.ToString() + "_" + term.ToString());

            index = 2;
            term  = 3;
            inMem.Add(index, term, index.ToString() + "_" + term.ToString());


            index = 3;
            term  = 2;
            inMem.Add(index, term, index.ToString() + "_" + term.ToString());
            index = 3;
            term  = 1;
            inMem.Add(index, term, index.ToString() + "_" + term.ToString());

            index = 3;
            term  = 3;
            inMem.Add(index, term, index.ToString() + "_" + term.ToString());


            Console.WriteLine("---------------Tests---------------------");

            if (inMem.Select(13, 1, out var billy))
            {
                Console.WriteLine(billy);
            }
            else
            {
                Console.WriteLine("billy not found");
            }


            Console.WriteLine("------------------------------------");

            foreach (var el in inMem.SelectForwardFromTo(0, 0, true, 1000, 1000))
            {
                Console.WriteLine($"v: {el.Item3}");
            }

            Console.WriteLine("------------------------------------");

            foreach (var el in inMem.SelectForwardFromTo(2, 2, false, 3, 2))
            {
                Console.WriteLine($"v: {el.Item3}");
            }

            //Console.WriteLine("------------------------------------");

            //foreach (var el in inMem.SelectBackwardFromTo(3, 2, false, 2, 2))
            //{
            //    Console.WriteLine($"v: {el.Item3}");
            //}


            Console.WriteLine("-----------After deletion-------------------------");

            inMem.Remove(inMem.SelectForwardFromTo(2, 2, false, 3, 2).ToList());

            foreach (var el in inMem.SelectForwardFromTo(0, 0, true, 1000, 1000))
            {
                Console.WriteLine($"v: {el.Item3}");
            }


            Console.ReadLine();
            return;
        }