private DataSeries GetBarDataSeriesInCache(Instrument instrument, BarType barType, long barSize, bool createNotExist)
{
var iId = instrument.Id;
DataSeries dataSeries;
if (barType == BarType.Time && barSize <= TimeSpan.TicksPerDay / TimeSpan.TicksPerSecond)
{
this.byIId_BSize[iId] = this.byIId_BSize[iId] ?? new IdArray<DataSeries>();
dataSeries = this.byIId_BSize[iId][(int)barSize];
}
else
{
this.byType_IId_BSize[(int)barType] = this.byType_IId_BSize[(int)barType] ?? new IdArray<Dictionary<long, DataSeries>>();
this.byType_IId_BSize[(int)barType][iId] = this.byType_IId_BSize[(int)barType][iId] ?? new Dictionary<long, DataSeries>();
this.byType_IId_BSize[(int)barType][iId].TryGetValue(barSize, out dataSeries);
}
if (dataSeries != null)
return dataSeries;
string name = DataSeriesNameHelper.GetName(instrument, barType, barSize);
dataSeries = GetDataSeries(name);
if (dataSeries == null && createNotExist)
{
dataSeries = CreateDataSeries(name);
this.dataFile.Write(name, dataSeries);
this.dataFile.Flush();
}
// Save to cache
if (barType == BarType.Time && barSize <= TimeSpan.TicksPerDay / TimeSpan.TicksPerSecond)
this.byIId_BSize[iId][(int)barSize] = dataSeries;
else
this.byType_IId_BSize[(int)barType][iId][barSize] = dataSeries;
return dataSeries;
}