Beispiel #1
0
        protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
        {
            switch (operationRequest.OperationCode)
            {
            // Echo
            case 0:
            {
                var          request  = OperationFactory.GetRequest(operationRequest.OperationCode, operationRequest.Parameters) as EchoRequest;
                EchoResponse response = new EchoResponse(request.Message);
                SendOperationResponse(new OperationResponse(response.OperationCode, response.Parameters), sendParameters);
            }
            break;

            // Delay Echo
            case 1:
            {
                var request   = OperationFactory.GetRequest(operationRequest.OperationCode, operationRequest.Parameters) as DelayRequest;
                int sleepTime = request.DelayMilliSeconds;
                Thread.Sleep(sleepTime);

                DelayResponse response = new DelayResponse(request.DelayMilliSeconds, request.Message);

                SendOperationResponse(new OperationResponse(response.OperationCode, response.Parameters), sendParameters);
            }
            break;
            }
        }
Beispiel #2
0
        private void OnReceiveDelayResponse(DelayResponse m)
        {
            var newMessage = new DelayResponse($"{m.Message}|||{Self.Path.Name} adding to the message");

            barActor.Tell(newMessage, Sender); //passing along Sender so the reply goes back to the MVC controller
            Self.Tell(PoisonPill.Instance);    //this tells itself a message to shutdown so this instance of the actor is removed
        }
Beispiel #3
0
        private void OnReceiveDelayResponse(DelayResponse m)
        {
            var actor = CreateChild();

            Context.System.Scheduler.ScheduleTellOnce(TimeSpan.FromSeconds(2),
                                                      actor,
                                                      m, Sender);
        }
        public string GetWithActorDelayed(string message)
        {
            var newMessage = new DelayResponse($"MVC Contoller (with delay) says: {message}");

            var response = _systemActors.FooCoordinatorActor.Ask <ResponseDelayed>(newMessage).Result;

            return(response.Response);
        }
Beispiel #5
0
            public async Task <DelayResponse> DelayAsync(TimeSpan delay, CancellationTokenProxy token)
            {
                WaitForOperationStarted.Set();

                var result = new DelayResponse
                {
                    Delay = delay,
                    TokenCanBeCanceled = token.Token.CanBeCanceled
                };

                try
                {
                    await Task.Delay(delay, token).ConfigureAwait(false);
                }
                catch (Exception ex)
                {
                    result.IsFaulted        = true;
                    result.ExceptionType    = ex.GetType().AssemblyQualifiedName;
                    result.ExceptionMessage = ex.ToString();
                }

                result.IsCanceled = token.Token.IsCancellationRequested;
                return(result);
            }
Beispiel #6
0
        private void OnReceiveDelayResponse(DelayResponse m)
        {
            var newMessage = new ResponseDelayed($"{m.Message}|||{Self.Path.Name} adding to the message");

            Sender.Tell(newMessage);
        }
        public virtual JsonResult IndexDelaysDetails(string operationNumber)
        {
            DelayResponse response;
            var           jsonDataRequest = PageSerializationHelper.DeserializeJsonForm(Request.Form[0]);
            var           viewModel       = PageSerializationHelper.DeserializeObject <DelaysEditModel>(jsonDataRequest.SerializedData);

            Dictionary <int, string> ListOutputs  = new Dictionary <int, string>();
            Dictionary <int, string> ListOutcomes = new Dictionary <int, string>();

            var ResultOP = _ClientDelayArchievementRepository.GetListOutputs(operationNumber);
            var ResultOC = _ClientDelayArchievementRepository.GetListOutComes(operationNumber);

            foreach (var data in ResultOP)
            {
                if (data.Key != 0)
                {
                    ListOutputs.Add(data.Key, data.Value);
                }
            }

            foreach (var data in ResultOC)
            {
                if (data.Key != 0)
                {
                    ListOutcomes.Add(data.Key, data.Value);
                }
            }

            string lang           = IDBContext.Current.CurrentLanguage.ToUpper();
            var    ListDelaysType = _ClientDelayArchievementRepository.GetTypesDelay(lang);

            viewModel.UpdateAchievementDelayFromFieldViewModel(jsonDataRequest.ClientFieldData, ListOutputs, ListOutcomes, ListDelaysType);

            response = new DelayResponse();

            if (viewModel.DeleteDelay.Count > 0)
            {
                response.IsValid = _ClientDelayArchievementRepository.DeleteAchievement(viewModel.DeleteDelay.ToArray());
            }

            if (viewModel.DeleteOtherDelay.Count > 0)
            {
                response.IsValid = _ClientDelayArchievementRepository.DeleteOtherDelay(viewModel.DeleteOtherDelay.ToArray());
            }

            ViewBag.IsFREditable = _findingRecomendationService.OperationEditValidation(operationNumber);

            var userName = IDBContext.Current.UserLoginName;

            var errorMessage = SynchronizationHelper.AccessToResources("edit", TCMGlobalValues.URL_DELAYS_DETAILS, operationNumber, userName);

            if (!string.IsNullOrWhiteSpace(errorMessage))
            {
                response.IsValid      = false;
                response.ErrorMessage = errorMessage;
            }
            else
            {
                response.IsValid = _ClientDelayArchievementRepository.SaveDelays(viewModel);

                if (response.IsValid)
                {
                    SynchronizationHelper.TryReleaseLock(TCMGlobalValues.URL_DELAYS_DETAILS, operationNumber, userName);
                }
            }

            return(Json(response));
        }