public TableMGenerator(NewGrammar convertedGrammar) { mTable = new List <List <string> >(); productions = convertedGrammar.productions; first = convertedGrammar.first; follow = convertedGrammar.follow; terminals = convertedGrammar.terminals; noTerminals = convertedGrammar.noTerminals; emptyNoTerminals = convertedGrammar.emptyNoTerminals; }
static void HandleGrammarConverter(string id, string value, ISubscriber sub) { try { Grammar grammar = JsonConvert.DeserializeObject <Grammar>(value); GrammarConverter grammarConverter = new GrammarConverter(grammar); grammarConverter.DeleteLeftRecursion(); grammarConverter.Factorization(); grammarConverter.SortGrammar(); grammarConverter.SetNoTerminals(grammarConverter.GetNoTerminals(grammarConverter.GetProductions())); grammarConverter.First(); grammarConverter.Follow(); NewGrammar newGrammar = new NewGrammar(); newGrammar.productions = grammarConverter.GetProductions(); newGrammar.first = grammarConverter.GetFirst(); newGrammar.follow = grammarConverter.GetFollow(); newGrammar.terminals = grammarConverter.GetTerminals(); newGrammar.noTerminals = grammarConverter.GetNoTerminals(); newGrammar.emptyNoTerminals = grammarConverter.GetEmptyNoTerminals(); String json = JsonConvert.SerializeObject(newGrammar); IDatabase redisDb = ConnectionMultiplexer.Connect(properties["REDIS_SERVER"]) .GetDatabase(Convert.ToInt32(properties["NEW_GRAMMAR_DB"])); string newId = id.Replace("GRAMMAR_", "NEW_GRAMMAR_"); redisDb.StringSet(newId, json); Console.WriteLine(newId + ": " + json + " - saved to redis NEW_GRAMMAR_DB"); // Queue IDatabase newGrammarQueueDb = ConnectionMultiplexer.Connect(properties["REDIS_SERVER"]) .GetDatabase(Convert.ToInt32(properties["NEW_GRAMMAR_QUEUE_DB"])); // put message to queue newGrammarQueueDb.ListLeftPush(NEW_GRAMMAR_QUEUE_NAME, newId, flags: CommandFlags.FireAndForget); // and notify consumers newGrammarQueueDb.Multiplexer.GetSubscriber().Publish(NEW_GRAMMAR_CHANNEL, ""); grammarConverter.Clear(); } catch (Exception e) { Console.WriteLine(e.Message); } }
private static void HandleSequence(string value, ConnectionMultiplexer redisConnection) { try { SequenceId sId = JsonConvert.DeserializeObject <SequenceId>(value); int grammarDbNumber = Convert.ToInt32(properties["GRAMMAR_DB"]); IDatabase grammarDb = redisConnection.GetDatabase(grammarDbNumber); string grammarStr = grammarDb.StringGet("GRAMMAR_" + sId.id); Grammar grammar = JsonConvert.DeserializeObject <Grammar>(grammarStr); int newGrammarDbNumber = Convert.ToInt32(properties["NEW_GRAMMAR_DB"]); IDatabase newGrammarDb = redisConnection.GetDatabase(newGrammarDbNumber); string newGrammarStr = newGrammarDb.StringGet("NEW_GRAMMAR_" + sId.id); NewGrammar newGrammar = JsonConvert.DeserializeObject <NewGrammar>(newGrammarStr); int mTableDbNumber = Convert.ToInt32(properties["TABLE_M_DB"]); IDatabase mTableDb = redisConnection.GetDatabase(mTableDbNumber); string mTableStr = mTableDb.StringGet("TABLE_M_" + sId.id); MTable mTable = JsonConvert.DeserializeObject <MTable>(mTableStr); SequenceHandler sequenceHandler = new SequenceHandler(grammar.startSymbol, newGrammar.terminals, newGrammar.noTerminals, mTable.mTable); sequenceHandler.Process(sId.sequence); IDatabase redisDb = ConnectionMultiplexer.Connect(properties["REDIS_SERVER"]) .GetDatabase(Convert.ToInt32(properties["SEQUENCE_DB"])); Sequence sequence = sequenceHandler.GetSequence(); sequence.grammarId = "NEW_GRAMMAR_" + sId.id; string json = JsonConvert.SerializeObject(sequence); String newId = "SEQUENCE_RESULT_" + sId.id; redisDb.StringSet(newId, json); Console.WriteLine(newId + ": " + json + " - saved to redis SEQUENCE_DB"); MakeStatisticEvent(newId); } catch (Exception e) { Console.WriteLine(e.Message); } }
private static void GenerateTable(String id, string value, ISubscriber sub) { try { NewGrammar newGrammar = JsonConvert.DeserializeObject <NewGrammar>(value); TableMGenerator generator = new TableMGenerator(newGrammar); generator.GenerateTable(); MTable table = new MTable(); table.mTable = generator.GetTable(); String json = JsonConvert.SerializeObject(table); IDatabase redisDb = ConnectionMultiplexer.Connect(properties["REDIS_SERVER"]) .GetDatabase(Convert.ToInt32(properties["TABLE_M_DB"])); string newId = id.Replace("NEW_GRAMMAR_", "TABLE_M_"); redisDb.StringSet(newId, json); Console.WriteLine(newId + ": " + json + " - saved to redis TABLE_M_DB"); generator.Clear(); } catch (Exception e) { Console.WriteLine(e.Message); } }
public IActionResult Get() { try { ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(properties["REDIS_SERVER"]); IDatabase statDb = redis.GetDatabase(Convert.ToInt32(properties["STATISTIC_DB"])); String accepted = ""; String declined = ""; accepted = statDb.StringGet("accepted"); declined = statDb.StringGet("declined"); StatisticResult statRes = new StatisticResult(); JsonSerializerSettings settings = new JsonSerializerSettings(); settings.ContractResolver = new DictionaryAsArrayResolver(); if (accepted == null) { Dictionary <List <String>, List <String> > empty = new Dictionary <List <string>, List <string> >(); statRes.result.Add("accepted", empty); } if (declined == null) { Dictionary <List <String>, List <String> > empty = new Dictionary <List <string>, List <string> >(); statRes.result.Add("declined", empty); } if (!String.IsNullOrEmpty(accepted)) { Statistic stat = JsonConvert.DeserializeObject <Statistic>(accepted, settings); List <string> keyList = new List <string>(stat.statistic.Keys); IDatabase newGrammarDb = redis.GetDatabase(Convert.ToInt32(properties["NEW_GRAMMAR_DB"])); Dictionary <List <String>, List <String> > result = new Dictionary <List <string>, List <string> >(); foreach (var grammarId in keyList) { string value = newGrammarDb.StringGet(grammarId); NewGrammar newGrammar = JsonConvert.DeserializeObject <NewGrammar>(value); List <String> production = newGrammar.productions; result.Add(production, stat.statistic[grammarId]); } statRes.result.Add("accepted", result); } if (!String.IsNullOrEmpty(accepted)) { Statistic stat = JsonConvert.DeserializeObject <Statistic>(declined, settings); List <string> keyList = new List <string>(stat.statistic.Keys); IDatabase newGrammarDb = redis.GetDatabase(Convert.ToInt32(properties["NEW_GRAMMAR_DB"])); Dictionary <List <String>, List <String> > result = new Dictionary <List <string>, List <string> >(); foreach (var grammarId in keyList) { string value = newGrammarDb.StringGet(grammarId); NewGrammar newGrammar = JsonConvert.DeserializeObject <NewGrammar>(value); List <String> production = newGrammar.productions; result.Add(production, stat.statistic[grammarId]); } statRes.result.Add("declined", result); } string json = JsonConvert.SerializeObject(statRes, settings); return(Ok(json)); } catch (Exception e) { Console.WriteLine(e.Message); return(new NotFoundResult()); } }