Example #1
0
        public Domain.Service.IJobIndexPointCalculator GetCalculator(Domain.Model.Calculations.CalculationId calculationId)
        {
            lock (providerLock)
            {
                if (calculators.Any(i => !i.Key.Equals(calculationId) && i.Value.State == CalculatorState.Running))
                {
                    throw new Exception("تنها اجرای یک محاسبه امکان پذیر است.");
                }

                return(calculators.AddOrUpdate(calculationId,
                                               id => (JobIndexPointCalculator)ServiceLocator.Current.GetInstance <IJobIndexPointCalculator>(),
                                               (id, old) =>
                {
                    if (old != null)
                    {
                        if (old.State == CalculatorState.Running)
                        {
                            return old;
                        }
                        else
                        {
                            ServiceLocator.Current.Release(old);
                        }
                    }
                    return (JobIndexPointCalculator)ServiceLocator.Current.GetInstance <IJobIndexPointCalculator>();
                }));
            }
        }
Example #2
0
        public CalculationEngineState GetCalculationState(Domain.Model.Calculations.CalculationId calculationId)
        {
            var client   = new CalculationEngineRef.CalculationEngineServiceClient();
            var progress = WcfClientHelper.CallMethod((c, id) => c.CheckStatus(id.Id), client, calculationId, errorAdapter);
            var msgList  = progress.MessageList.ToList();

            return(new CalculationEngineState
            {
                MessageList = msgList,
                Percent = progress.Percent,
                StateName = progress.StateName
            });
        }
Example #3
0
        public void PauseCalculation(Domain.Model.Calculations.CalculationId calculationId)
        {
            var client = new CalculationEngineRef.CalculationEngineServiceClient();

            WcfClientHelper.CallMethod((c, id) => c.Pause(id.Id), client, calculationId, errorAdapter);
        }