/// <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; }