public AccountDataSnapshot GetSnapshot(byte providerId, byte route)
{
var table = GetTable(providerId, route, false);
if (table == null)
return new AccountDataSnapshot(new AccountDataEntry[0]);
AccountDataSnapshot result;
lock (table)
{
var list = new List<AccountDataEntry>();
foreach (string current in table.Items.Keys)
{
var class2 = table.Items[current];
var accountData = new AccountData(this.framework.Clock.DateTime, AccountDataType.AccountValue, current, providerId, route);
CopyFields(class2.Values, accountData.Fields);
var list2 = new List<AccountData>();
foreach (var current2 in class2.Positions.Values)
{
var accountData2 = new AccountData(this.framework.Clock.DateTime, AccountDataType.Position, current, providerId, route);
CopyFields(current2, accountData2.Fields);
list2.Add(accountData2);
}
var list3 = new List<AccountData>();
foreach (var current3 in class2.Orders.Values)
{
var accountData3 = new AccountData(this.framework.Clock.DateTime, AccountDataType.Order, current, providerId, route);
CopyFields(current3, accountData3.Fields);
list3.Add(accountData3);
}
list.Add(new AccountDataEntry(current, accountData, list2.ToArray(), list3.ToArray()));
}
result = new AccountDataSnapshot(list.ToArray());
}
return result;
}