public IAggregateCalculator CreateCalculator(
NodeId aggregateId,
DateTime startTime,
DateTime endTime,
double processingInterval,
bool stepped,
AggregateConfiguration configuration)
{
if (NodeId.IsNull(aggregateId))
{
return null;
}
AggregatorFactory factory = null;
lock (m_lock)
{
if (!m_factories.TryGetValue(aggregateId, out factory))
{
return null;
}
}
if (configuration.UseServerCapabilitiesDefaults)
{
configuration = m_defaultConfiguration;
}
IAggregateCalculator calculator = factory(aggregateId, startTime, endTime, processingInterval, stepped, configuration);
if (calculator == null)
{
return null;
}
return calculator;
}