Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
            }
        }
Esempio n. 3
0
        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, ""));
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
    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;
            }
        }
    }
Esempio n. 6
0
        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);
        }