//-------------------------------------------------------------------------
        /// <summary>
        /// Creates an instance wrapping the specified listener. </summary>
        ///  <param name="listener">  the underlying listener wrapped by this object </param>
        /// <param name="tasksExpected">  the number of tasks to be executed </param>
        /// <param name="columns">  the columns for which values are being calculated </param>
        internal ListenerWrapper(CalculationListener listener, int tasksExpected, IList <CalculationTarget> targets, IList <Column> columns)
        {
            this.listener      = ArgChecker.notNull(listener, "listener");
            this.tasksExpected = ArgChecker.notNegative(tasksExpected, "tasksExpected");

            listenerLock.@lock();
            try
            {
                listener.calculationsStarted(targets, columns);

                if (tasksExpected == 0)
                {
                    listener.calculationsComplete();
                }
            }
            finally
            {
                listenerLock.unlock();
            }
        }
Ejemplo n.º 2
0
 internal UnwrappingListener(CalculationListener @delegate)
 {
     this.@delegate = @delegate;
 }
Ejemplo n.º 3
0
        public void calculateAsync(CalculationTasks tasks, MarketData marketData, ReferenceData refData, CalculationListener listener)
        {
            // the listener is decorated to unwrap ScenarioArrays containing a single result
            ScenarioMarketData md = ScenarioMarketData.of(1, marketData);
            UnwrappingListener unwrappingListener = new UnwrappingListener(listener);

            calculateMultiScenarioAsync(tasks, md, refData, unwrappingListener);
        }
Ejemplo n.º 4
0
        public void calculateMultiScenarioAsync(CalculationTasks tasks, ScenarioMarketData marketData, ReferenceData refData, CalculationListener listener)
        {
            IList <CalculationTask> taskList = tasks.Tasks;

            // the listener is invoked via this wrapper
            // the wrapper ensures thread-safety for the listener
            // it also calls the listener with single CalculationResult cells, not CalculationResults
            System.Action <CalculationResults> consumer = new ListenerWrapper(listener, taskList.Count, tasks.Targets, tasks.Columns);

            // run each task using the executor
            taskList.ForEach(task => runTask(task, marketData, refData, consumer));
        }
Ejemplo n.º 5
0
        public virtual void calculateMultiScenarioAsync <T1>(CalculationRules calculationRules, IList <T1> targets, IList <Column> columns, ScenarioMarketData marketData, ReferenceData refData, CalculationListener listener) where T1 : com.opengamma.strata.basics.CalculationTarget
        {
            CalculationTasks tasks = CalculationTasks.of(calculationRules, targets, columns, refData);

            taskRunner.calculateMultiScenarioAsync(tasks, marketData, refData, listener);
        }