/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.sesame.server;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import com.opengamma.sesame.engine.CalculationArguments;
import com.opengamma.sesame.engine.Engine;
import com.opengamma.sesame.engine.Results;
import com.opengamma.sesame.marketdata.CompositeMarketDataSpecification;
import com.opengamma.sesame.marketdata.MarketDataEnvironmentBuilder;
/**
* Server capable of executing view requests.
*
* @deprecated use {@link Engine} directly
*/
@Deprecated
public class DefaultFunctionServer implements FunctionServer {
private final Engine _engine;
/**
* @param engine engine that performs the calculation cycles
*/
@Inject
public DefaultFunctionServer(Engine engine) {
_engine = engine;
}
@Override
public Results executeSingleCycle(FunctionServerRequest<IndividualCycleOptions> request) {
IndividualCycleOptions cycleOptions = request.getCycleOptions();
CalculationArguments calculationArguments =
CalculationArguments.builder()
.valuationTime(cycleOptions.getValuationTime())
.captureInputs(cycleOptions.isCaptureInputs())
.marketDataSpecification(CompositeMarketDataSpecification.of(cycleOptions.getMarketDataSpecs()))
.build();
return _engine.runView(request.getViewConfig(),
calculationArguments,
MarketDataEnvironmentBuilder.empty(),
request.getInputs());
}
@Override
public List<Results> executeMultipleCycles(FunctionServerRequest<GlobalCycleOptions> request) {
List<Results> resultsList = new ArrayList<>();
for (IndividualCycleOptions cycleOptions : request.getCycleOptions()) {
CalculationArguments calculationArguments =
CalculationArguments.builder()
.valuationTime(cycleOptions.getValuationTime())
.captureInputs(cycleOptions.isCaptureInputs())
.marketDataSpecification(CompositeMarketDataSpecification.of(cycleOptions.getMarketDataSpecs()))
.build();
Results results = _engine.runView(request.getViewConfig(),
calculationArguments,
MarketDataEnvironmentBuilder.empty(),
request.getInputs());
resultsList.add(results);
}
return resultsList;
}
}