public ModulesManager(int maxPacketSize, string receiverHost, int receiverPort, int receiverTimeout, string rpcHost, int rpcPort, int queriesRecomputeTimer, int purgeTimer, RSA rsa, IGossipStrategy gossipStrategy, int gossipTimer, int retryDelay, int maxRetriesCount, ZMI zmi) { Logger.Log("Creating modules..."); _registry = new ExecutorRegistry(); var executor = new Executor(_registry); void AddModule(IModule module) { if (executor.TryAddModule(module)) { return; } Logger.LogError($"Could not add {module.GetType().Name}"); throw new ApplicationException( $"Could not add {module.GetType().Name}, which violates the application"); } Console.WriteLine($"Agent started on {receiverHost}:{receiverPort}\nRPC started on {rpcHost}:{rpcPort}"); AddModule(_timer = new TimerModule(executor)); AddModule(_communication = new CommunicationModule(executor, maxPacketSize, IPAddress.Parse(receiverHost), receiverPort, receiverTimeout)); AddModule(_zmi = new ZMIModule(zmi, rsa, queriesRecomputeTimer, purgeTimer, executor)); AddModule(_rmi = new RMIModule(executor, new ServerPort(rpcHost, rpcPort, ServerCredentials.Insecure))); AddModule(_gossip = new GossipModule(executor, gossipTimer, retryDelay, maxRetriesCount, gossipStrategy)); }
public OperationDetails TestPassing(QuestionViewModel question) { TimerModule currentTimer = (TimerModule)HttpContext.Current.Application["Timer" + HttpContext.Current.User.Identity.Name]; TempResult tempResult = Database.TempResults.GetAll(). Where(x => x.UserName == HttpContext.Current.User.Identity.Name). SingleOrDefault(); bool isPass = PassedQuestion(question, ref tempResult); if (currentTimer.StopWatch.IsRunning && !String.IsNullOrWhiteSpace(tempResult.QuestionPassing)) { if (isPass) { QuestionViewModel nextQuestion = MapperFromDB.Map <Question, QuestionViewModel> (Database.Questions.Get(tempResult.QuestionPassing.StringStirrer().FirstOrDefault())); HttpContext.Current.Application["Test" + HttpContext.Current.User.Identity.Name] = nextQuestion.IdQuestion; return(new OperationDetails(true, nextQuestion)); } return(new OperationDetails(true, question)); } else { EndTestPassing(tempResult); return(new OperationDetails(false, null)); } }
public OperationDetails GetCurrentTestState(int IdQuestion) { TempResult tempResult = Database.TempResults. Find(x => x.UserName == HttpContext.Current.User.Identity.Name). SingleOrDefault(); int currentId = Int32.Parse( HttpContext.Current.Application["Test" + HttpContext.Current.User.Identity.Name].ToString()); TimerModule timer = (TimerModule) HttpContext.Current.Application["Timer" + HttpContext.Current.User.Identity.Name]; if (tempResult != null) { if (String.IsNullOrWhiteSpace(tempResult.QuestionsPassed)) { QuestionViewModel question = MapperFromDB.Map <Question, QuestionViewModel> (Database.Questions.Get(currentId)); foreach (AnswerViewModel answer in question.Answers) { answer.Correct = false; } return(new OperationDetails(Math.Round(timer.CurrentInterval().TotalSeconds).ToString(), question)); } if (tempResult.QuestionPassing.StringStirrer(). Contains(currentId)) { QuestionViewModel question = MapperFromDB.Map <Question, QuestionViewModel> (Database.Questions.Get(currentId)); foreach (AnswerViewModel answer in question.Answers) { answer.Correct = false; } return(new OperationDetails(Math.Round(timer.CurrentInterval().TotalSeconds).ToString(), question)); } else { QuestionViewModel question = MapperFromDB.Map <Question, QuestionViewModel> (Database.Questions.Get(IdQuestion)); foreach (AnswerViewModel answer in question.Answers) { answer.Correct = false; } return(new OperationDetails( Math.Round(timer.CurrentInterval().TotalSeconds).ToString(), question)); } } else { return(new OperationDetails(false, "")); } }
private void EndTestPassing(TempResult tempResult) { TimerModule currentTimer = (TimerModule)HttpContext.Current.Application["Timer" + HttpContext.Current.User.Identity.Name]; HttpContext.Current.Application["Timer" + HttpContext.Current.User.Identity.Name] = null; object obj = new object(); currentTimer.EndTimer(obj); }
private void Update() { if (Input.GetMouseButtonDown(0)) { Vector2 worldPos = mainCamera.ScreenToWorldPoint(Input.mousePosition); RaycastHit2D hit = Physics2D.Raycast(worldPos, Vector2.zero); if (hit.collider == null) { return; } CardModule m = hit.collider.GetComponent <CardModule>(); // 선택학 카드가 없을 경우 if (Select == null) { Select = m; m.RotateAnimation(true); } //이전에 선택한카드 (Select)와 //방금 선택한 카드 (m)가 같으면 else if (Select.Equals(m)) { m.RotateAnimation(false); Select = null; } //선택한 카드와 방금 선택한 카드가 다를 경우 else { //Equals , == //색이 같은 경우 if (Select.CardColor.Equals(m.CardColor)) { Select.ReleaseAnimation(); m.ReleaseAnimation(); releaseNumber++; if (cardSize == releaseNumber) { TimerModule module = FindObjectOfType <TimerModule>(); module.isUpdate = false; menu.SetActive(true); return; } } else //색이 다를 경우 { Select.RotateAnimation(false); m.RotateAnimation(false); } Select = null; } } }
public QuestionViewModel StartTest(int IdResult) { char delimetr = ','; List <UserQuestion> userQuestions = new List <UserQuestion>(); TempResult tempResult = new TempResult { IdResult = IdResult, UserName = HttpContext.Current.User.Identity.Name, }; foreach (Question question in Database.Results.Get(IdResult).Test.Questions) { tempResult.QuestionPassing += "" + question.IdQuestion + ","; userQuestions.Add(new UserQuestion() { IdResult = IdResult, IdQuestion = question.IdQuestion, MaxScore = question.Score, UserAnswers = new List <UserAnswer>() }); } Database.UserQuestions.AddRange(userQuestions); Database.TempResults.Add(tempResult); Database.Complete(); TimerModule timer = new TimerModule(IdResult, Database.Results.Get(IdResult).Test.Time); HttpContext.Current.Application["Timer" + HttpContext.Current.User.Identity.Name] = timer; Question questiondb = Database.Questions. Get(Int32.Parse(tempResult.QuestionPassing.Split(delimetr)[0])); HttpContext.Current.Application["Test" + HttpContext.Current.User.Identity.Name] = questiondb.IdQuestion; var mapper = new MapperConfiguration(mcf => mcf.CreateMap <Question, QuestionViewModel>()).CreateMapper(); QuestionViewModel questionDto = mapper.Map <Question, QuestionViewModel>(questiondb); return(questionDto); }