private void HandleCalcMessage(CalcMessage msg) { ColorConsole.WriteLineYellow($"Calc V2 for {msg.LeftOperand} and {msg.RightOperand}"); Thread.Sleep(5000); Sender.Tell(CalcVersionTwo(msg)); ColorConsole.WriteLineCyan($"Result completed."); }
private void sendStartMessage(string fileName) { CalcMessage calcMessage = new CalcMessage(); calcMessage.InputFileName = fileName; MsgBusPayload msgBusPayload = new MsgBusPayload(); msgBusPayload.Sender = "HeavyCalcController"; msgBusPayload.Payload = JsonConvert.SerializeObject(calcMessage); ctxMsgBus.PutMessage(msgBusPayload); }
private void CalculateButton_Click(object sender, RoutedEventArgs e) { var firstOp = Int32.Parse(FirstOperand.Text); var secondOp = Int32.Parse(SecondOperand.Text); Log($"Sending calculation #{_jobId} with: {firstOp}, {secondOp}"); var msg = new CalcMessage(_jobId++, firstOp, secondOp); Task.Run(async() => { var retVal = await _api.Ask <CalcResultMessage>(msg); Log($"Result for calculation #{retVal.JobId} using Version {retVal.Version} = {retVal.Result}"); }); AssignRandomValues(); }
private void CalcMsg() { try { int chat_id = 2000000002; string ACCESS_TOKEN = AppConfiguration.GetSection("VK_ACCESS_TOKENS").GetValue <string>("SERGIO_ACCESS_TOKEN_KM"); VkApi = new VkApi(ACCESS_TOKEN); using (var scope = ServiceScopeFactory.CreateScope()) { DB = scope.ServiceProvider.GetRequiredService <ApplicationContext>(); CalcMessage cm; using (var transaction = DB.Database.BeginTransaction()) { cm = DB.CalcMessages.FirstOrDefault(); if (cm == null) { CalcMessage calcMessage = new CalcMessage { MarkerMessageId = 0, StartMessageId = 0, Stage = "firstStart" }; DB.CalcMessages.Add(calcMessage); DB.SaveChanges(); } cm = DB.CalcMessages.FirstOrDefault(); if (cm.Stage == "firstStart") { MessageHistory history = VkApi.GetMsgHistory <MessageHistory>(peer_id: chat_id, count: 1); //Thread.Sleep(350); List <Item> items = history.Response.Items; cm.MarkerMessageId = items.First().Id; cm.StartMessageId = items.First().Id; cm.Stage = "calcToEnd"; DB.SaveChanges(); } transaction.Commit(); } if (cm.Stage == "calcToEnd") { while (true) { using (var transaction = DB.Database.BeginTransaction()) { MessageHistory history = VkApi.GetMsgHistory <MessageHistory>(peer_id: chat_id, count: 200, startMessageId: cm.StartMessageId); List <Item> items = history.Response.Items; //маркер это конец для следующего подсчета cm.StartMessageId = items.Last().Id; /// DB.Entry(cm).Property("StartMessageId").IsModified = true; if (items.Count == 1) { cm.Stage = "firstCalcToMarker"; DB.SaveChanges(); transaction.Commit(); break; } for (int i = 0; i < items.Count; i++) { User checkUser = DB.Users.FirstOrDefault(x => x.Id == items[i].From_id); if (checkUser != null) { UserMessage userMessage = DB.UserMessages.FirstOrDefault(x => x.UserId == items[i].From_id); userMessage.Message++; DB.Entry(userMessage).Property("Message").IsModified = true; userMessage.LastMessageDate = items[i].Date; DB.Entry(userMessage).Property("LastMessageDate").IsModified = true; } else if (checkUser == null && items[i].From_id > 0) { UsersGetModel ugm = VkApi.UsersGet <UsersGetModel>(items[i].From_id); Thread.Sleep(350); string firstName = ugm.Response.Single().First_name; string lastName = ugm.Response.Single().Last_name; User newUser = new User { Id = items[i].From_id, FirstName = firstName, LastName = lastName, Activity = DateTime.Now }; DB.Users.Add(newUser); UserMessage userMessage = new UserMessage { User = newUser, Message = 1 }; DB.UserMessages.Add(userMessage); } DB.SaveChanges(); } transaction.Commit(); } } } else if (cm.Stage == "firstCalcToMarker") { using (var transaction = DB.Database.BeginTransaction()) { MessageHistory history = VkApi.GetMsgHistory <MessageHistory>(peer_id: chat_id, count: 200); List <Item> items = history.Response.Items; for (int i = 0; i < items.Count; i++) { if (items[i].Id == cm.MarkerMessageId)//если сообщений меньше 200 и мы уже дошли до маркера { cm.MarkerMessageId = items.First().Id; cm.Stage = "firstCalcToMarker";//это излишне DB.SaveChanges(); break; } else if (i == 199)//с продолжением { cm.NewMarkerMessageId = items.First().Id; cm.Stage = "calcToMarker"; cm.StartMessageId = items.Last().Id; DB.SaveChanges(); break; } User checkUser = DB.Users.FirstOrDefault(x => x.Id == items[i].From_id); if (checkUser != null) { UserMessage userMessage = DB.UserMessages.FirstOrDefault(x => x.UserId == items[i].From_id); userMessage.Message++; userMessage.LastMessageDate = items[i].Date; } else if (checkUser == null && items[i].From_id > 0) { UsersGetModel ugm = VkApi.UsersGet <UsersGetModel>(items[i].From_id); Thread.Sleep(350); string firstName = ugm.Response.Single().First_name; string lastName = ugm.Response.Single().Last_name; User newUser = new User { Id = items[i].From_id, FirstName = firstName, LastName = lastName, Activity = DateTime.Now }; DB.Users.Add(newUser); UserMessage userMessage = new UserMessage { User = newUser, Message = 1 }; DB.UserMessages.Add(userMessage); } DB.SaveChanges(); } transaction.Commit(); } } else if (cm.Stage == "calcToMarker") { bool isCalc = true; while (isCalc) { using (var transaction = DB.Database.BeginTransaction()) { MessageHistory history = VkApi.GetMsgHistory <MessageHistory>(peer_id: chat_id, count: 200, startMessageId: cm.StartMessageId); List <Item> items = history.Response.Items; cm.StartMessageId = items.Last().Id; for (int i = 0; i < items.Count; i++) { if (items[i].Id == cm.MarkerMessageId) { cm.Stage = "firstCalcToMarker"; cm.MarkerMessageId = cm.NewMarkerMessageId; DB.SaveChanges(); isCalc = false; break; } User checkUser = DB.Users.FirstOrDefault(x => x.Id == items[i].From_id); if (checkUser != null) { UserMessage userMessage = DB.UserMessages.FirstOrDefault(x => x.UserId == items[i].From_id); userMessage.Message++; DB.Entry(userMessage).Property("Message").IsModified = true; userMessage.LastMessageDate = items[i].Date; DB.Entry(userMessage).Property("LastMessageDate").IsModified = true; } else if (checkUser == null && items[i].From_id > 0) { UsersGetModel ugm = VkApi.UsersGet <UsersGetModel>(items[i].From_id); Thread.Sleep(350); string firstName = ugm.Response.Single().First_name; string lastName = ugm.Response.Single().Last_name; User newUser = new User { Id = items[i].From_id, FirstName = firstName, LastName = lastName, Activity = DateTime.Now }; DB.Users.Add(newUser); UserMessage userMessage = new UserMessage { User = newUser, Message = 1 }; DB.UserMessages.Add(userMessage); } DB.SaveChanges(); } transaction.Commit(); } } } } } catch (Exception e) { string ANNOUNCER_ACCESS_TOKEN = AppConfiguration.GetSection("VK_ACCESS_TOKENS").GetValue <string>("ANNOUNCER_ACCESS_TOKEN"); VkApi.SendMessage <dynamic>(chatId: 1, message: "ПРИВЕТ ! ПРИВЕТ ! ПРИВЕТ !", accessToken: ANNOUNCER_ACCESS_TOKEN); Logger.LogError(e.Message); Logger.LogError(e.StackTrace); } }
private CalcResultMessage CalcVersionTwo(CalcMessage msg) { var result = (msg.LeftOperand + msg.RightOperand) * 2; return(new CalcResultMessage(msg.JobId, 2, msg, result)); }
private CalcResultMessage CalcVersionOne(CalcMessage msg) { var result = msg.LeftOperand + msg.RightOperand; return(new CalcResultMessage(msg.JobId, 1, msg, result)); }