private void OnEvent(IntPtr snapshotDataPtr, IntPtr userData)
        {
            DxSnapshotData snapshotData = (DxSnapshotData)Marshal.PtrToStructure(snapshotDataPtr, typeof(DxSnapshotData));

            switch (snapshotData.event_type)
            {
            case EventType.Order:
                var orderBuf = NativeBufferFactory.CreateOrderBuf(snapshotData.symbol, snapshotData.records, snapshotData.records_count, null);
                if (listener is IDxOrderSnapshotListener)
                {
                    (listener as IDxOrderSnapshotListener).OnOrderSnapshot <NativeEventBuffer <NativeOrder>, NativeOrder>(orderBuf);
                }
                break;

            case EventType.Candle:
                var candleBuf = NativeBufferFactory.CreateCandleBuf(snapshotData.symbol, snapshotData.records, snapshotData.records_count, null);
                if (listener is IDxCandleSnapshotListener)
                {
                    (listener as IDxCandleSnapshotListener).OnCandleSnapshot <NativeEventBuffer <NativeCandle>, NativeCandle>(candleBuf);
                }
                break;

            case EventType.TimeAndSale:
                var timeAndSaleBuf = NativeBufferFactory.CreateTimeAndSaleBuf(snapshotData.symbol, snapshotData.records, snapshotData.records_count, null);
                if (listener is IDxTimeAndSaleSnapshotListener)
                {
                    (listener as IDxTimeAndSaleSnapshotListener).OnTimeAndSaleSnapshot <NativeEventBuffer <NativeTimeAndSale>, NativeTimeAndSale>(timeAndSaleBuf);
                }
                break;

            case EventType.SpreadOrder:
                var spreadOrderBuf = NativeBufferFactory.CreateSpreadOrderBuf(snapshotData.symbol, snapshotData.records, snapshotData.records_count, null);
                if (listener is IDxSpreadOrderSnapshotListener)
                {
                    (listener as IDxSpreadOrderSnapshotListener).OnSpreadOrderSnapshot <NativeEventBuffer <NativeSpreadOrder>, NativeSpreadOrder>(spreadOrderBuf);
                }
                break;

            case EventType.Greeks:
                var greeksBuf = NativeBufferFactory.CreateGreeksBuf(snapshotData.symbol, snapshotData.records, snapshotData.records_count, null);
                if (listener is IDxGreeksSnapshotListener)
                {
                    (listener as IDxGreeksSnapshotListener).OnGreeksSnapshot <NativeEventBuffer <NativeGreeks>, NativeGreeks>(greeksBuf);
                }
                break;

            case EventType.Series:
                var seriesBuf = NativeBufferFactory.CreateSeriesBuf(snapshotData.symbol, snapshotData.records, snapshotData.records_count, null);
                if (listener is IDxSeriesSnapshotListener)
                {
                    (listener as IDxSeriesSnapshotListener).OnSeriesSnapshot <NativeEventBuffer <NativeSeries>, NativeSeries>(seriesBuf);
                }
                break;
            }
        }
        private void OnIncOrderSnapshot(IntPtr snapshotDataPtr, int newSnapshot, IntPtr userData)
        {
            var snapshotData = (DxSnapshotData)Marshal.PtrToStructure(snapshotDataPtr, typeof(DxSnapshotData));

            if (snapshotData.event_type == EventType.Order)
            {
                var orderBuf = NativeBufferFactory.CreateOrderBuf(snapshotData.symbol, snapshotData.records, snapshotData.records_count, null);
                if (listener is IDxIncOrderSnapshotListener)
                {
                    (listener as IDxIncOrderSnapshotListener).OnOrderSnapshot <NativeEventBuffer <NativeOrder>, NativeOrder>(orderBuf, newSnapshot != 0);
                }
            }
        }
Exemple #3
0
        private void OnEvent(EventType eventType, IntPtr symbol, IntPtr data, int dataCount, IntPtr eventParamsPtr, IntPtr userData)
        {
            object        obj          = Marshal.PtrToStructure(eventParamsPtr, typeof(DxEventParams));
            DxEventParams event_params = (DxEventParams)obj;

            EventParams nativeEventParams = new EventParams(event_params.flags, event_params.time_int_field, event_params.snapshot_key);

            switch (eventType)
            {
            case EventType.Order:
                var orderBuf = NativeBufferFactory.CreateOrderBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxOrderListener)?.OnOrder <NativeEventBuffer <NativeOrder>, NativeOrder>(orderBuf);
                break;

            case EventType.Profile:
                var profileBuf = NativeBufferFactory.CreateProfileBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxProfileListener)?.OnProfile <NativeEventBuffer <NativeProfile>, NativeProfile>(profileBuf);
                break;

            case EventType.Quote:
                var quoteBuf = NativeBufferFactory.CreateQuoteBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxQuoteListener)?.OnQuote <NativeEventBuffer <NativeQuote>, NativeQuote>(quoteBuf);
                break;

            case EventType.TimeAndSale:
                var tsBuf = NativeBufferFactory.CreateTimeAndSaleBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxTimeAndSaleListener)?.OnTimeAndSale <NativeEventBuffer <NativeTimeAndSale>, NativeTimeAndSale>(tsBuf);
                break;

            case EventType.Trade:
                var tBuf = NativeBufferFactory.CreateTradeBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxTradeListener)?.OnTrade <NativeEventBuffer <NativeTrade>, NativeTrade>(tBuf);
                break;

            case EventType.Summary:
                var sBuf = NativeBufferFactory.CreateSummaryBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxFundamentalListener)?.OnFundamental <NativeEventBuffer <NativeSummary>, NativeSummary>(sBuf);
                break;

            case EventType.Candle:
                var cBuf = NativeBufferFactory.CreateCandleBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxCandleListener)?.OnCandle <NativeEventBuffer <NativeCandle>, NativeCandle>(cBuf);
                break;

            case EventType.TradeETH:
                var teBuf = NativeBufferFactory.CreateTradeETHBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxTradeETHListener)?.OnTradeETH <NativeEventBuffer <NativeTradeETH>, NativeTradeETH>(teBuf);
                break;

            case EventType.SpreadOrder:
                var spreadOrderBuf = NativeBufferFactory.CreateSpreadOrderBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxSpreadOrderListener)?.OnSpreadOrder <NativeEventBuffer <NativeSpreadOrder>, NativeSpreadOrder>(spreadOrderBuf);
                break;

            case EventType.Greeks:
                var greeksBuf = NativeBufferFactory.CreateGreeksBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxGreeksListener)?.OnGreeks <NativeEventBuffer <NativeGreeks>, NativeGreeks>(greeksBuf);
                break;

            case EventType.TheoPrice:
                var theoPriceBuf = NativeBufferFactory.CreateTheoPriceBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxTheoPriceListener)?.OnTheoPrice <NativeEventBuffer <NativeTheoPrice>, NativeTheoPrice>(theoPriceBuf);
                break;

            case EventType.Underlying:
                var underlyingBuf = NativeBufferFactory.CreateUnderlyingBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxUnderlyingListener)?.OnUnderlying <NativeEventBuffer <NativeUnderlying>, NativeUnderlying>(underlyingBuf);
                break;

            case EventType.Series:
                var seriesBuf = NativeBufferFactory.CreateSeriesBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxSeriesListener)?.OnSeries <NativeEventBuffer <NativeSeries>, NativeSeries>(seriesBuf);
                break;

            case EventType.Configuration:
                var configurationBuf = NativeBufferFactory.CreateConfigurationBuf(symbol, data, dataCount, nativeEventParams);
                (eventListener as IDxConfigurationListener)?.OnConfiguration <NativeEventBuffer <NativeConfiguration>, NativeConfiguration>(configurationBuf);
                break;
            }
        }
        private void OnQuote(IntPtr symbol, IntPtr quote, int count, IntPtr userData)
        {
            var quoteBuf = NativeBufferFactory.CreateQuoteBuf(symbol, quote, count, null);

            quoteListener.OnQuote <NativeEventBuffer <NativeQuote>, NativeQuote>(quoteBuf);
        }