internal void OnAccountData(AccountData data)
{
var @class = GetTable(data.ProviderId, data.Route, true);
lock (@class)
{
AccountDataTableItem class2;
if ([email protected](data.Account, out class2))
{
class2 = new AccountDataTableItem();
@class.Items.Add(data.Account, class2);
}
switch (data.Type)
{
case AccountDataType.AccountValue:
MergeFields(data.Fields, class2.Values);
break;
case AccountDataType.Position:
{
AccountDataKey key = new AccountDataKey(data, new[] { "Symbol", "Maturity", "PutOrCall", "Strike" });
AccountDataFieldList list;
if (!class2.Positions.TryGetValue(key, out list))
{
list = new AccountDataFieldList();
class2.Positions.Add(key, list);
}
list.Clear();
CopyFields(data.Fields, list);
break;
}
case AccountDataType.Order:
{
AccountDataKey key2 = new AccountDataKey(data, new[] { "OrderID" });
AccountDataFieldList list;
if (!class2.Orders.TryGetValue(key2, out list))
{
list = new AccountDataFieldList();
class2.Orders.Add(key2, list);
}
list.Clear();
CopyFields(data.Fields, list);
break;
}
}
}
}