static FrameworkExtensions() { SubscriptionManagerSubscriptionsField = GetFastField <SubscriptionManager, Dictionary <int, Dictionary <Instrument, int> > >(); EventBusAttachedField = GetFastField <EventBus, EventQueue[]>(); EventBusAttachedCountField = GetFastField <EventBus, int>(); ClockEventQueueField = GetFastField <Clock, IEventQueue>(); EventDispatcherFrameworkField = GetFastField <EventDispatcher, Framework>(); ProviderManagerFrameworkField = GetFastField <ProviderManager, Framework>(); InstrumentManagerFrameworkField = GetFastField <InstrumentManager, Framework>(); DataManagerFrameworkField = GetFastField <DataManager, Framework>(); PortfolioFrameworkField = GetFastField <Portfolio, Framework>(); ProviderFrameworkField = GetFastField <Provider, Framework>(); StrategyFrameworkField = GetFastField <Strategy, Framework>(); InstrumentFrameworkField = GetFastField <Instrument, Framework>(); ClockModeFiled = GetFastField <Clock, ClockMode>(); ReminderClockFiled = GetFastField <Reminder, Clock>(); foreach (var item in typeof(EventManager).GetFields(BindingFlags.Instance | BindingFlags.NonPublic)) { if (item.FieldType == typeof(bool) && item.GetRequiredCustomModifiers().Any(x => x == typeof(IsVolatile))) { ThreadExitField = new FastFieldInfo <EventManager, bool>(item); } else if (item.FieldType == typeof(Thread)) { EventManagerThreadField = item; } } }
static ExecutionReportSerializer() { foreach (var field in typeof(ExecutionReport).GetFields(BindingFlags.Instance | BindingFlags.NonPublic)) { var attr = field.GetCustomAttribute <DataMemberAttribute>(); if (attr != null && attr.Name != "order") { Fields[attr.Name] = field; } } account = new FastFieldInfo <ExecutionReport, string>(Fields["account"]); algoId = new FastFieldInfo <ExecutionReport, int>(Fields["algoId"]); avgPx = new FastFieldInfo <ExecutionReport, double>(Fields["avgPx"]); clId = new FastFieldInfo <ExecutionReport, int>(Fields["clId"]); clientId = new FastFieldInfo <ExecutionReport, int>(Fields["clientId"]); clientID = new FastFieldInfo <ExecutionReport, string>(Fields["clientID"]); clOrderId = new FastFieldInfo <ExecutionReport, string>(Fields["clOrderId"]); commission = new FastFieldInfo <ExecutionReport, double>(Fields["commission"]); cumQty = new FastFieldInfo <ExecutionReport, double>(Fields["cumQty"]); currencyId = new FastFieldInfo <ExecutionReport, byte>(Fields["currencyId"]); dateTime = new FastFieldInfo <ExecutionReport, DateTime>(Fields["dateTime"]); execId = new FastFieldInfo <ExecutionReport, string>(Fields["execId"]); execInst = new FastFieldInfo <ExecutionReport, string>(Fields["execInst"]); execType = new FastFieldInfo <ExecutionReport, ExecType>(Fields["execType"]); expireTime = new FastFieldInfo <ExecutionReport, DateTime>(Fields["expireTime"]); id = new FastFieldInfo <ExecutionReport, int>(Fields["id"]); instrumentId = new FastFieldInfo <ExecutionReport, int>(Fields["instrumentId"]); isLoaded = new FastFieldInfo <ExecutionReport, bool>(Fields["isLoaded"]); lastPx = new FastFieldInfo <ExecutionReport, double>(Fields["lastPx"]); lastQty = new FastFieldInfo <ExecutionReport, double>(Fields["lastQty"]); leavesQty = new FastFieldInfo <ExecutionReport, double>(Fields["leavesQty"]); minQty = new FastFieldInfo <ExecutionReport, double>(Fields["minQty"]); oCA = new FastFieldInfo <ExecutionReport, string>(Fields["oCA"]); orderId = new FastFieldInfo <ExecutionReport, int>(Fields["orderId"]); ordQty = new FastFieldInfo <ExecutionReport, double>(Fields["ordQty"]); ordStatus = new FastFieldInfo <ExecutionReport, OrderStatus>(Fields["ordStatus"]); ordType = new FastFieldInfo <ExecutionReport, OrderType>(Fields["ordType"]); pegDifference = new FastFieldInfo <ExecutionReport, double>(Fields["pegDifference"]); portfolioId = new FastFieldInfo <ExecutionReport, int>(Fields["portfolioId"]); price = new FastFieldInfo <ExecutionReport, double>(Fields["price"]); providerId = new FastFieldInfo <ExecutionReport, byte>(Fields["providerId"]); providerOrderId = new FastFieldInfo <ExecutionReport, string>(Fields["providerOrderId"]); routeId = new FastFieldInfo <ExecutionReport, byte>(Fields["routeId"]); side = new FastFieldInfo <ExecutionReport, OrderSide>(Fields["side"]); stopPx = new FastFieldInfo <ExecutionReport, double>(Fields["stopPx"]); strategyId = new FastFieldInfo <ExecutionReport, int>(Fields["strategyId"]); subSide = new FastFieldInfo <ExecutionReport, SubSide>(Fields["subSide"]); text = new FastFieldInfo <ExecutionReport, string>(Fields["text"]); timeInForce = new FastFieldInfo <ExecutionReport, TimeInForce>(Fields["timeInForce"]); transactTime = new FastFieldInfo <ExecutionReport, DateTime>(Fields["transactTime"]); typeId = new FastFieldInfo <ExecutionReport, byte>(Fields["typeId"]); }
static PortfolioSerializer() { var fields = new Dictionary <string, FieldInfo>(); foreach (var field in typeof(Portfolio).GetFields(BindingFlags.Instance | BindingFlags.NonPublic)) { var attr = field.GetCustomAttribute <DataMemberAttribute>(); if (attr != null) { fields[attr.Name] = field; } } id = new FastFieldInfo <Portfolio, int>(fields["id"]); isLoaded = new FastFieldInfo <Portfolio, bool>(fields["isLoaded"]); parentId = new FastFieldInfo <Portfolio, int>(fields["parentId"]); }
static OrderExtensions() { foreach (var field in typeof(Order).GetFields(BindingFlags.Instance | BindingFlags.NonPublic)) { if (field.FieldType == typeof(SubSide)) { SubSideField = new FastFieldInfo <Order, SubSide>(field); continue; } if (field.FieldType == typeof(SmartQuant.OrderType)) { TypeField = new FastFieldInfo <Order, SmartQuant.OrderType>(field); continue; } if (field.FieldType == typeof(SmartQuant.OrderStatus)) { StatusField = new FastFieldInfo <Order, SmartQuant.OrderStatus>(field); continue; } } }
static StopExtensions() { var creationTimeField = typeof(Stop).GetField("creationTime", BindingFlags.Instance | BindingFlags.NonPublic); if (creationTimeField != null) { CreationTimeField = new FastFieldInfo <Stop, DateTime>(creationTimeField); } var strategyField = typeof(Stop).GetField("strategy", BindingFlags.Instance | BindingFlags.NonPublic); if (strategyField != null) { StrategyField = new FastFieldInfo <Stop, Strategy>(strategyField); } var qtyField = typeof(Stop).GetField("qty", BindingFlags.Instance | BindingFlags.NonPublic); if (qtyField != null) { QtyField = new FastFieldInfo <Stop, double>(qtyField); } }
static StrategyExtensions() { foreach (var field in typeof(StrategyManager_).GetFields(BindingFlags.Instance | BindingFlags.NonPublic)) { if (field.FieldType == typeof(SmartQuant.IdArray <Strategy_>)) { if (StrategiesField1 == null) { StrategiesField1 = new FastFieldInfo <StrategyManager_, SmartQuant.IdArray <Strategy_> >(field); } else { StrategiesField2 = new FastFieldInfo <StrategyManager_, SmartQuant.IdArray <Strategy_> >(field); } } } foreach (var field in typeof(Strategy).GetFields(BindingFlags.Instance | BindingFlags.NonPublic)) { if (field.FieldType == typeof(SmartQuant.IdArray <Strategy>)) { StrategyByIdField = new FastFieldInfo <Strategy, SmartQuant.IdArray <Strategy> >(field); } else if (field.FieldType == typeof(IExecutionProvider)) { ExecutionProviderField = new FastFieldInfo <Strategy, IExecutionProvider>(field); } else if (field.FieldType == typeof(IDataProvider)) { DataProviderField = new FastFieldInfo <Strategy, IDataProvider>(field); } } StrategyOnStopStatusChangedMethod = typeof(Strategy).GetMethod("OnStopStatusChanged_", BindingFlags.Instance | BindingFlags.NonPublic); OnStopStatusChangedAction = (Action <Strategy, Stop>)StrategyOnStopStatusChangedMethod.CreateDelegate(typeof(Action <Strategy, Stop>)); }