public void SubscribeToNewsHeadlineStream()
        {
            string searchKeywords = SearchTextBox.Text;

            App.ctx.BeginLogIn(App.USERNAME, App.PASSWORD, a =>
            {
                App.ctx.EndLogIn(a);

                //Next we create a connection to the streaming api, using the authenticated session
                streamingClient = App.StreamingClient;
                streamingClient.Connect();

                //And instantiate a listener for news headlines on the appropriate topic
                //You can have multiple listeners on one connection
                newsListener = streamingClient.BuildNewsHeadlinesListener(searchKeywords);
                newsListener.Start();

                //The MessageRecieved event will be triggered every time a new News headline is available,
                //so attach a handler for that event, and wait until something comes through
                NewsDTO recievedNewsHeadline = null;
                newsListener.MessageReceived += (s, e) =>
                {
                    recievedNewsHeadline = e.Data;
                    //Add this new news headline to the main items collection.
                    ItemViewModel item = new ItemViewModel();
                    item.Headline = recievedNewsHeadline.Headline;
                    item.PublishDate = recievedNewsHeadline.PublishDate.ToString();
                    recievedNewsHeadline.StoryId = recievedNewsHeadline.StoryId;

                    App.ViewModel.LoadData(item);
                };

            }, null);
        }
        public QuoteEventHandler(IStreamingListener <QuoteDTO> listener)
        {
            Listener = listener;
            listener.MessageReceived += OnMessageReceived;

            Queue = new ConcurrentQueue <string>();
        }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="accountOperatorId"></param>
        /// <returns></returns>
        public IStreamingListener <PriceDTO> BuildDefaultPricesListener(int accountOperatorId)
        {
            IStreamingListener <PriceDTO> listener = BuildListener <PriceDTO>("CITYINDEXSTREAMINGDEFAULTPRICES", "PRICES.AC" + accountOperatorId);

            ((TestStreamingListener <PriceDTO>)listener).CreateMessage += _testStreamingClientFactory.OnCreatePriceMessage;
            return(listener);
        }
Exemple #4
0
 private void BuildListener_STREAMINGCLIENTACCOUNT_DataAdapterSet()
 {
     LogToScreen("building listener on CITYINDEXCLIENTACCOUNT data adapter");
     _clientAccountMarginsListener = StreamingClient.BuildClientAccountMarginListener();
     _clientAccountMarginsListener.MessageReceived += ClientAccountMarginsListenerMessageReceived;
     Dispatcher.BeginInvoke(() => statusUpdatesListBox.Items.Add("listener on CITYINDEXCLIENTACCOUNT built"));
 }
Exemple #5
0
 private void BuildListener_CITYINDEXSTREAMINGDEFAULTPRICES_DataAdapterSet()
 {
     LogToScreen("building listener on CITYINDEXSTREAMINGDEFAULTPRICES data adapter");
     _defaultPriceListener = StreamingClient.BuildDefaultPricesListener(ACCOUNTOPERATORID);
     _defaultPriceListener.MessageReceived += _defaultPricesListener_MessageReceived;
     LogToScreen("listener on CITYINDEXSTREAMING built");
 }
Exemple #6
0
        public ClientAccountMarginEventHandler(IStreamingListener <ClientAccountMarginDTO> listener)
        {
            Listener = listener;
            listener.MessageReceived += OnMessageReceived;

            Queue = new ConcurrentQueue <string>();
        }
Exemple #7
0
 private void BuildListener_CITYINDEXSTREAMING_DataAdapterSet()
 {
     LogToScreen("building listener on CITYINDEXSTREAMING data adapter");
     _priceListener = StreamingClient.BuildPricesListener(PRICEMARKETIDS);
     _priceListener.MessageReceived += PriceListenerMessageReceived;
     LogToScreen("listener on CITYINDEXSTREAMING built");
 }
Exemple #8
0
 private void BuildListener_STREAMINGTRADINGACCOUNT_DataAdapterSet()
 {
     LogToScreen("building listener on CITYINDEXTRADINGACCOUNT data adapter");
     _quotesListener = StreamingClient.BuildQuotesListener();
     _quotesListener.MessageReceived += _quotesListener_MessageReceived;
     Dispatcher.BeginInvoke(() => statusUpdatesListBox.Items.Add("listener on CITYINDEXTRADINGACCOUNT built"));
 }
        protected override void Cleanup()
        {
            if (_listener != null && _streamingClient != null)
            {
                _streamingClient.TearDownListener(_listener);
            }

            if (_listener != null)
            {
                _listener.Stop();
                _listener.Dispose();
                _listener = null;
            }

            if (_streamingClient != null)
            {
                _streamingClient.Dispose();
                _streamingClient = null;
            }

            if (_client != null)
            {
                if (!string.IsNullOrEmpty(_client.Session))
                    _client.LogOut();

                _client.Dispose();
                _client = null;
            }
        }
        private PriceDTO GetMarketInfo(int marketId)
        {
            IStreamingListener <PriceDTO> listener = null;
            PriceDTO marketInfo = null;

            try
            {
                listener = _streamingClient.BuildPricesListener(marketId);
                var gate = new AutoResetEvent(false);

                listener.MessageReceived += (o, s) =>
                {
                    marketInfo = s.Data;
                    gate.Set();
                };


                if (!gate.WaitOne(10000))
                {
                    throw new Exception("timed out waiting for market data");
                }
            }
            finally
            {
                _streamingClient.TearDownListener(listener);
            }

            return(marketInfo);
        }
        private void BuildClients()
        {
            Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating rpc client"));
            RpcClient = new Client(RPC_URI, "CI-WP7");
            RpcClient.BeginLogIn(USERNAME, PASSWORD, ar =>
            {
                var session = RpcClient.EndLogIn(ar);

                ThreadPool.QueueUserWorkItem(_ =>
                {
                    Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating listeners"));
                    StreamingClient = StreamingClientFactory.CreateStreamingClient(STREAM_URI, USERNAME, session.Session);
                    MarketPricesStream = StreamingClient.BuildPricesListener(new[] { MarketId });
                    MarketPricesStream.MessageReceived += OnMarketPricesStreamMessageReceived;
                    OrdersStream = StreamingClient.BuildOrdersListener();
                    OrdersStream.MessageReceived += OnOrdersStreamMessageReceived;

                    Dispatcher.BeginInvoke(() => listBox1.Items.Add("getting account info"));
                    RpcClient.AccountInformation.BeginGetClientAndTradingAccount(ar2 =>
                    {
                        Account = RpcClient.AccountInformation.EndGetClientAndTradingAccount(ar2);

                        Dispatcher.BeginInvoke(() => listBox1.Items.Add("getting market info"));
                        RpcClient.Market.BeginGetMarketInformation(MarketId.ToString(), ar3 =>
                        {
                            Market = RpcClient.Market.EndGetMarketInformation(ar3).MarketInformation;
                            Dispatcher.BeginInvoke(() => button1.IsEnabled = true);
                        }, null);
                    }, null);
                });
            }, null);
        }
Exemple #12
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public IStreamingListener <TradeMarginDTO> BuildTradeMarginListener()
        {
            IStreamingListener <TradeMarginDTO> listener = BuildListener <TradeMarginDTO>("STREAMINGCLIENTACCOUNT", "TRADEMARGIN.ALL");

            ((TestStreamingListener <TradeMarginDTO>)listener).CreateMessage += _testStreamingClientFactory.OnCreateTradeMarginMessage;

            return(listener);
        }
Exemple #13
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public IStreamingListener <OrderDTO> BuildOrdersListener()
        {
            string topic = "ORDERS";
            IStreamingListener <OrderDTO> listener = BuildListener <OrderDTO>("STREAMINGCLIENTACCOUNT", topic);

            ((TestStreamingListener <OrderDTO>)listener).CreateMessage += _testStreamingClientFactory.OnCreateOrderMessage;
            return(listener);
        }
Exemple #14
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public IStreamingListener <ClientAccountMarginDTO> BuildClientAccountMarginListener()
        {
            string topic = "CLIENTACCOUNTMARGIN";
            IStreamingListener <ClientAccountMarginDTO> listener = BuildListener <ClientAccountMarginDTO>("STREAMINGCLIENTACCOUNT", topic);

            ((TestStreamingListener <ClientAccountMarginDTO>)listener).CreateMessage += _testStreamingClientFactory.OnCreateClientAccountMarginMessage;
            return(listener);
        }
Exemple #15
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public IStreamingListener <QuoteDTO> BuildQuotesListener()
        {
            string topic = "QUOTES";
            IStreamingListener <QuoteDTO> listener = BuildListener <QuoteDTO>("STREAMINGTRADINGACCOUNT", topic);

            ((TestStreamingListener <QuoteDTO>)listener).CreateMessage += _testStreamingClientFactory.OnCreateQuoteMessage;
            return(listener);
        }
Exemple #16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="marketIds"></param>
        /// <returns></returns>
        public IStreamingListener <PriceDTO> BuildPricesListener(int[] marketIds)
        {
            var topic = string.Join(" ", marketIds.Select(t => Regex.Replace("PRICES.PRICE.{marketIds}", "{marketIds}", t.ToString())).ToArray());
            IStreamingListener <PriceDTO> listener = BuildListener <PriceDTO>("CITYINDEXSTREAMING", topic);

            ((TestStreamingListener <PriceDTO>)listener).CreateMessage += _testStreamingClientFactory.OnCreatePriceMessage;
            return(listener);
        }
        public void SubscribeToMarketPrice(int marketId)
        {
            Log.Info("Subscribing to market price for market id: " + marketId + ".");
            IStreamingListener <PriceDTO> priceListener = _lsCityindexStreamingConnection.BuildPriceListener(PRICES_TOPIC + marketId);

            priceListener.MessageReceived += new EventHandler <MessageEventArgs <PriceDTO> >(OnPriceListener_MessageReceived);
            priceListener.Start();
            _listeners.Add(priceListener);
        }
Exemple #18
0
 private void BeginCollectingMessages <T>(IStreamingListener <T> listener, ICollection <T> messages) where T : class
 {
     listener.MessageReceived += (s, e) =>
     {
         messages.Add(e.Data);
         _logger.Info("++ Recieved message " + e.Data.ToStringWithValues());
     };
     listener.Start();
 }
        public void SubscribeToNewsHeadlinesByRegion(string region)
        {
            Log.Info("Subscribing to news headlines for region: " + region + ".");
            IStreamingListener <NewsDTO> newsListener = _lsCityindexStreamingConnection.BuildNewsHeadlinesListener(NEWS_ADAPTER + "HEADLINES." + region);

            newsListener.MessageReceived += new EventHandler <MessageEventArgs <NewsDTO> >(NewsListener_MessageReceived);
            newsListener.Start();
            _listeners.Add(newsListener);
        }
        public void SubscribeToMarketPriceList(List <int> marketIdList)
        {
            Log.Info("Subscribing to market prices.");
            var topics = marketIdList.Select(marketId => PRICES_TOPIC + marketId).ToList();
            IStreamingListener <PriceDTO> priceListener = _lsCityindexStreamingConnection.BuildPriceListener(topics);

            priceListener.MessageReceived += new EventHandler <MessageEventArgs <PriceDTO> >(OnPriceListener_MessageReceived);
            priceListener.Start();
            _listeners.Add(priceListener);
        }
Exemple #21
0
        private void RestartPriceListener(params int[] markets)
        {
            if (_pricesListener != null)
            {
                KillPriceListener();
            }

            _pricesListener = StreamingClient.BuildPricesListener(markets);
            _pricesListener.MessageReceived += (PricesListenerMessageReceived);
        }
Exemple #22
0
        // only listening to one news topic at a time. right now options are US, UK and ALL.

        public void SetNewsTopic(string topic)
        {
            if (_newsListener != null)
            {
                _newsListener.MessageReceived -= NewsListenerMessageReceived;
                _newsListener.Stop();
                _newsListener = null;
            }

            _newsListener = StreamingClient.BuildNewsHeadlinesListener(topic);
            _newsListener.MessageReceived += NewsListenerMessageReceived;
        }
Exemple #23
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (_streamingClient != null)
            {
                try
                {
                    _listener.Stop();

                    _streamingClient.Disconnect();
                }
                catch
                {

                    // swallow
                }
                _listener = null;
                _streamingClient = null;
            }
            if (_rpcClient != null)
            {
                try
                {
                    _rpcClient.LogOut();
                }
                catch
                {

                    // swallow
                }

                _streamingClient = null;

            }
            var settingsForm = new Settings();
            settingsForm.ShowDialog();
            if (settingsForm.StreamingClient == null)
            {
                return;
                MessageBox.Show("Not connected");
            }
            _streamingClient = settingsForm.StreamingClient;
            _listener = _streamingClient.BuildPricesListener(int.Parse(MarketIdTextBox.Text));
            _listener.MessageReceived += new EventHandler<MessageEventArgs<PriceDTO>>(ListenerMessageReceived);
            _listener.Start();
            _rpcClient = settingsForm.RpcClient;
            _logic = new TradingRobot.Logic.SimpleBuyLowSellHigh(_rpcClient);
            _logic.BidPrice = SellNUD.Value;
            _logic.OfferPrice = BuyNUD.Value;
            _logic.Quantity = QuantityNUD.Value;
            MessageBox.Show("Connected");

        }
Exemple #24
0
        public void TearDownListener(IStreamingListener listener)
        {
            listener.Stop();

            ((TestStreamingListener)listener).TearMeDown();

            if (_adapters.ContainsKey(listener.Adapter))
            {
                var adapter = _adapters[listener.Adapter];
                adapter.Remove(listener.Topic);
                if (adapter.Count == 0)
                {
                    _adapters.Remove(listener.Adapter);
                }
            }
        }
Exemple #25
0
        /// <summary>
        /// Allows consumer to stop and remove a listener from this client.
        /// </summary>
        public void TearDownListener(IStreamingListener listener)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            lock (_currentListeners)
            {
                if (_currentListeners.ContainsValue(listener))
                {
                    _currentListeners.Remove(listener.Topic);
                }
                new Thread(listener.Stop).Start();
            }
        }
Exemple #26
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="category"></param>
        /// <returns></returns>
        public IStreamingListener <NewsDTO> BuildNewsHeadlinesListener(string category)
        {
            var topic = Regex.Replace("NEWS.HEADLINES.{category}", "{category}", category.ToString());
            IStreamingListener <NewsDTO> listener = BuildListener <NewsDTO>("CITYINDEXSTREAMING", topic);

            // hook up the create message event to the factory and enclose the unhook for use later.
            // this way we don't have to have 6 different unhook methods (one for each dto) on the factory

            ((TestStreamingListener <NewsDTO>)listener).CreateMessage += _testStreamingClientFactory.OnCreateNewsMessage;

            ((TestStreamingListener)listener).TearMeDown = () =>
            {
                ((TestStreamingListener <NewsDTO>)listener).CreateMessage -= _testStreamingClientFactory.OnCreateNewsMessage;
            };

            return(listener);
        }
Exemple #27
0
        private void StartButtonClick(object sender, RoutedEventArgs e)
        {
            Dispatcher.BeginInvoke(() => { listBox2.Items.Add("Starting"); });

            Dispatcher.BeginInvoke(() =>
            {
                listBox1.Items.Clear();
                listBox2.Items.Clear();
                listBox3.Items.Clear();

                StartButton.IsEnabled = false;
                StopButton.IsEnabled  = false;


                _backgroundRpcStop = false;
                _backgroundRpc     = new Thread(() =>
                {
                    while (_backgroundRpcStop == false)
                    {
                        new AutoResetEvent(false).WaitOne(100000);
                        var marketInfo = rpcClient.Market.GetMarketInformation("400535967");
                        Dispatcher.BeginInvoke(() => listBox3.Items.Add(marketInfo.MarketInformation.MarketId));
                    }
                    return;
                });
                _backgroundRpc.Start();
                new Thread(() =>
                {
                    Debug.WriteLine("building listener2");
                    _listener = _streamingClient.BuildPricesListener(400535967, 81136, 400509294, 400535971, 80902, 400509295, 400193864, 400525367, 80926, 400498641, 400193866, 91047, 400194551, 121766, 400172033, 139144);
                    _listener.MessageReceived += ListenerMessageReceived;
                    Debug.WriteLine("building listener");

                    _listener2 = _streamingClient.BuildDefaultPricesListener(2347);
                    _listener2.MessageReceived += Listener2MessageReceived;
                    Debug.WriteLine("listener started");
                    Debug.WriteLine("listener2 started");

                    Dispatcher.BeginInvoke(() =>
                    {
                        StartButton.IsEnabled = false;
                        StopButton.IsEnabled  = true;
                    });
                }).Start();
            });
        }
        public void SubscribeToNewsHeadlineStream()
        {
            if (!CIAPI_Global.IsConnected)
            {
                CIAPI_Global.ConnectCIAPI();
            }
            newsListener = CIAPI_Global.StreamingClient.BuildNewsHeadlinesListener("NEWS.MOCKHEADLINES.UK");
            newsListener.Start();

            var gate = new ManualResetEvent(false);

            newsListener.MessageReceived += (s, e) =>
            {
                newsReceived(e.Data.StoryId);
                gate.Set();
            };
            gate.WaitOne();
        }
Exemple #29
0
        public void TearDownListener(IStreamingListener listener)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            if (_adapters.ContainsKey(listener.Adapter))
            {
                var adapter = _adapters[listener.Adapter];
                adapter.TearDownListener(listener);
                if (adapter.ListenerCount == 0)
                {
                    _adapters.Remove(listener.Adapter);
                    adapter.Dispose();
                }
            }
        }
Exemple #30
0
 public void Dispose()
 {
     if (_newsListener != null)
     {
         _newsListener.Stop();
         _newsListener = null;
     }
     if (_streamingClient != null)
     {
         _streamingClient.Disconnect();
         _streamingClient = null;
     }
     if (_client != null)
     {
         _client.BeginLogOut(ar => _client.EndLogOut(ar), null);
         _client = null;
     }
 }
Exemple #31
0
        private void BuildClients()
        {
            Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating rpc client"));
            RpcClient = new Client(RPC_URI, STREAM_URI, "CI-WP7");
            RpcClient.BeginLogIn(USERNAME, PASSWORD, ar =>
            {
                var session = RpcClient.EndLogIn(ar);

                ThreadPool.QueueUserWorkItem(_ =>
                {
                    Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating listeners"));
                    StreamingClient    = RpcClient.CreateStreamingClient();
                    MarketPricesStream = StreamingClient.BuildDefaultPricesListener(AccountOperatorId);
                    MarketPricesStream.MessageReceived            += OnMarketPricesStreamMessageReceived;
                    Dispatcher.BeginInvoke(() => button1.IsEnabled = true);
                });
            }, null);
        }
Exemple #32
0
        private void BuildClients()
        {
            Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating rpc client"));
            RpcClient = new Client(RPC_URI, STREAM_URI, "CI-WP7");
            RpcClient.BeginLogIn(USERNAME, PASSWORD, ar =>
            {
                var session = RpcClient.EndLogIn(ar);

                ThreadPool.QueueUserWorkItem(_ =>
                {
                    Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating listeners"));
                    StreamingClient = RpcClient.CreateStreamingClient();
                    MarketPricesStream = StreamingClient.BuildDefaultPricesListener(AccountOperatorId);
                    MarketPricesStream.MessageReceived += OnMarketPricesStreamMessageReceived;
                    Dispatcher.BeginInvoke(() => button1.IsEnabled = true);
                });
            }, null);
        }
        public void SubscribeToPrice(object marketId)
        {
            if (!CIAPI_Global.IsConnected)
            {
                CIAPI_Global.ConnectCIAPI();
            }

            priceListner = CIAPI_Global.StreamingClient.BuildPriceListener("PRICES.PRICE." + marketId);//marketIDs[i]);
            priceListner.Start();

            var gate = new ManualResetEvent(false);

            priceListner.MessageReceived += (sender, priceArg) =>
            {
                OnPriceReceived(new PriceReceivedArgs(priceArg.Data));
                gate.Set();
            };
            gate.WaitOne();
        }
Exemple #34
0
        private void BuildClients()
        {
            //Hook up a logger for the CIAPI.CS libraries
            LogManager.CreateInnerLogger = (logName, logLevel, showLevel, showDateTime, showLogName, dateTimeFormat)
                                           => new SimpleDebugAppender(logName, logLevel, showLevel, showDateTime, showLogName, dateTimeFormat);

            Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating rpc client"));
            RpcClient = new Client(RpcUri, StreamingUri, "CI-WP7");
            RpcClient.BeginLogIn(UerName, Password, ar =>
            {
                try
                {
                    RpcClient.EndLogIn(ar);
                    //RpcClient.MagicNumberResolver.PreloadMagicNumbersAsync();
                    RpcClient.MagicNumberResolver.PreloadMagicNumbers();
                    ThreadPool.QueueUserWorkItem(_ =>
                    {
                        Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating listeners"));
                        StreamingClient = RpcClient.CreateStreamingClient();
                        PriceListener   = StreamingClient.BuildPricesListener(MarketId);
                        PriceListener.MessageReceived += OnMessageReceived;

                        Dispatcher.BeginInvoke(() => listBox1.Items.Add("getting account info"));
                        RpcClient.AccountInformation.BeginGetClientAndTradingAccount(ar2 =>
                        {
                            Account = RpcClient.AccountInformation.EndGetClientAndTradingAccount(ar2);

                            Dispatcher.BeginInvoke(() => listBox1.Items.Add("getting market info"));
                            RpcClient.Market.BeginGetMarketInformation(MarketId.ToString(), ar3 =>
                            {
                                Market = RpcClient.Market.EndGetMarketInformation(ar3).MarketInformation;
                                Dispatcher.BeginInvoke(() => Button1.IsEnabled = true);
                            }, null);
                        }, null);
                    });
                }
                catch (Exception ex)
                {
                    Dispatcher.BeginInvoke(() => listBox1.Items.Add("exception caught: " + ex));
                }
            }, null);
        }
        private void BuildClients()
        {
            //Hook up a logger for the CIAPI.CS libraries
            LogManager.CreateInnerLogger = (logName, logLevel, showLevel, showDateTime, showLogName, dateTimeFormat)
                         => new SimpleDebugAppender(logName, logLevel, showLevel, showDateTime, showLogName, dateTimeFormat);

            Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating rpc client"));
            RpcClient = new Client(RpcUri, StreamingUri, "CI-WP7");
            RpcClient.BeginLogIn(UerName, Password, ar =>
            {
                try
                {
                    RpcClient.EndLogIn(ar);
                    //RpcClient.MagicNumberResolver.PreloadMagicNumbersAsync();
                    RpcClient.MagicNumberResolver.PreloadMagicNumbers();
                    ThreadPool.QueueUserWorkItem(_ =>
                    {
                        Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating listeners"));
                        StreamingClient = RpcClient.CreateStreamingClient();
                        PriceListener = StreamingClient.BuildPricesListener(MarketId);
                        PriceListener.MessageReceived += OnMessageReceived;

                        Dispatcher.BeginInvoke(() => listBox1.Items.Add("getting account info"));
                        RpcClient.AccountInformation.BeginGetClientAndTradingAccount(ar2 =>
                        {
                            Account = RpcClient.AccountInformation.EndGetClientAndTradingAccount(ar2);

                            Dispatcher.BeginInvoke(() => listBox1.Items.Add("getting market info"));
                            RpcClient.Market.BeginGetMarketInformation(MarketId.ToString(), ar3 =>
                            {
                                Market = RpcClient.Market.EndGetMarketInformation(ar3).MarketInformation;
                                Dispatcher.BeginInvoke(() => Button1.IsEnabled = true);
                            }, null);
                        }, null);
                    });
                }
                catch (Exception ex)
                {
                    Dispatcher.BeginInvoke(() => listBox1.Items.Add("exception caught: " + ex));
                }
            }, null);
        }
Exemple #36
0
        public IStreamingListener <TDto> BuildListener <TDto>(string dataAdapter, string mode, bool snapshot, string topic)
            where TDto : class, new()
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(GetType().FullName);
            }

            //lock (_adapters)
            {
                if (!_adapters.ContainsKey(dataAdapter))
                {
#if WINDOWS_PHONE
                    if (_adapters.Count == 5)
                    {
                        throw new Exception("Max concurrent lightstreamer adapters for WP7.1 is 5");
                    }
#endif
                    FaultTolerantLsClientAdapter adp = null;
                    try
                    {
                        adp = new FaultTolerantLsClientAdapter(_streamingUri, _userName, _sessionId, dataAdapter, _usePolling, _serializer);
                        adp.StatusUpdate += OnStatusUpdate;
                        _adapters.Add(dataAdapter, adp);
                        adp.Start();
                    }
                    catch
                    {
                        if (adp != null)
                        {
                            adp.Dispose();
                        }

                        throw;
                    }
                }
                var adapter = _adapters[dataAdapter];
                IStreamingListener <TDto> listener = adapter.BuildListener <TDto>(topic, mode, snapshot);
                return(listener);
            }
        }
        public override void Execute()
        {
            if (string.IsNullOrEmpty(ServerUrl))
                throw new ApplicationException("StreamingLatencyMonitor: ServerUrl is not set");

            lock (_sync)
            {
                if (_client == null)
                {
                    _client = new Client(new Uri(ServerUrl), new Uri(StreamingServerUrl), "{API_KEY}", 1);

                    _client.LogIn(UserName, Password);

                    _streamingClient = _client.CreateStreamingClient();
                    _streamingStartTime = DateTime.UtcNow;

                    _listener = _streamingClient.BuildPricesListener(MarketId);

                    _listener.MessageReceived += OnPriceUpdate;
                }
            }
        }
Exemple #38
0
        private void BuildClients()
        {
            //Hook up a logger for the CIAPI.CS libraries
            LogManager.CreateInnerLogger = (logName, logLevel, showLevel, showDateTime, showLogName, dateTimeFormat)
                                           => new SimpleDebugAppender(logName, logLevel, showLevel, showDateTime, showLogName, dateTimeFormat);

            Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating rpc client"));
            RpcClient = new Client(RPC_URI, STREAM_URI, "CI-WP7");

            RpcClient.BeginLogIn(USERNAME, PASSWORD, ar =>
            {
                _logger.Info("ending login");
                var session = RpcClient.EndLogIn(ar);

                ThreadPool.QueueUserWorkItem(_ =>
                {
                    Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating listeners"));
                    StreamingClient    = RpcClient.CreateStreamingClient();
                    MarketPricesStream = StreamingClient.BuildPricesListener(new[] { MarketId });
                    MarketPricesStream.MessageReceived += OnMarketPricesStreamMessageReceived;
                    OrdersStream = StreamingClient.BuildOrdersListener();
                    OrdersStream.MessageReceived += OnOrdersStreamMessageReceived;

                    Dispatcher.BeginInvoke(() => listBox1.Items.Add("getting account info"));
                    RpcClient.AccountInformation.BeginGetClientAndTradingAccount(ar2 =>
                    {
                        Account = RpcClient.AccountInformation.EndGetClientAndTradingAccount(ar2);

                        Dispatcher.BeginInvoke(() => listBox1.Items.Add("getting market info"));
                        RpcClient.Market.BeginGetMarketInformation(MarketId.ToString(), ar3 =>
                        {
                            Market = RpcClient.Market.EndGetMarketInformation(ar3).MarketInformation;
                            Dispatcher.BeginInvoke(() => button1.IsEnabled = true);
                        }, null);
                    }, null);
                });
            }, null);
        }
        private void BuildClients()
        {
            //Hook up a logger for the CIAPI.CS libraries
            LogManager.CreateInnerLogger = (logName, logLevel, showLevel, showDateTime, showLogName, dateTimeFormat)
                         => new SimpleDebugAppender(logName, logLevel, showLevel, showDateTime, showLogName, dateTimeFormat);

            Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating rpc client"));
            RpcClient = new Client(RPC_URI, STREAM_URI, "CI-WP7");
           
            RpcClient.BeginLogIn(USERNAME, PASSWORD, ar =>
            {
                _logger .Info("ending login");
                var session = RpcClient.EndLogIn(ar);

                ThreadPool.QueueUserWorkItem(_ =>
                {
                    Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating listeners"));
                    StreamingClient = RpcClient.CreateStreamingClient();
                    MarketPricesStream = StreamingClient.BuildPricesListener(new[] { MarketId });
                    MarketPricesStream.MessageReceived += OnMarketPricesStreamMessageReceived;
                    OrdersStream = StreamingClient.BuildOrdersListener();
                    OrdersStream.MessageReceived += OnOrdersStreamMessageReceived;

                    Dispatcher.BeginInvoke(() => listBox1.Items.Add("getting account info"));
                    RpcClient.AccountInformation.BeginGetClientAndTradingAccount(ar2 =>
                    {
                        Account = RpcClient.AccountInformation.EndGetClientAndTradingAccount(ar2);

                        Dispatcher.BeginInvoke(() => listBox1.Items.Add("getting market info"));
                        RpcClient.Market.BeginGetMarketInformation(MarketId.ToString(), ar3 =>
                        {
                            Market = RpcClient.Market.EndGetMarketInformation(ar3).MarketInformation;
                            Dispatcher.BeginInvoke(() => button1.IsEnabled = true);
                        }, null);
                    }, null);
                });
            }, null);
        }
        private void BuildClients()
        {
            Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating rpc client"));
            RpcClient = new Client(RpcUri, StreamingUri, "CI-WP7");
            RpcClient.BeginLogIn(UerName, Password, ar =>
            {
                try
                {
                    RpcClient.EndLogIn(ar);

                    ThreadPool.QueueUserWorkItem(_ =>
                    {
                        Dispatcher.BeginInvoke(() => listBox1.Items.Add("creating listeners"));
                        StreamingClient = RpcClient.CreateStreamingClient();
                        PriceListener = StreamingClient.BuildPricesListener(MarketId);
                        PriceListener.MessageReceived += OnMessageReceived;

                        Dispatcher.BeginInvoke(() => listBox1.Items.Add("getting account info"));
                        RpcClient.AccountInformation.BeginGetClientAndTradingAccount(ar2 =>
                        {
                            Account = RpcClient.AccountInformation.EndGetClientAndTradingAccount(ar2);

                            Dispatcher.BeginInvoke(() => listBox1.Items.Add("getting market info"));
                            RpcClient.Market.BeginGetMarketInformation(MarketId.ToString(), ar3 =>
                            {
                                Market = RpcClient.Market.EndGetMarketInformation(ar3).MarketInformation;
                                Dispatcher.BeginInvoke(() => Button1.IsEnabled = true);
                            }, null);
                        }, null);
                    });
                }
                catch (Exception ex)
                {
                    Dispatcher.BeginInvoke(() => listBox1.Items.Add("exception caught: " + ex));
                }
            }, null);
        }
Exemple #41
0
        private void ToggleSubscribeButton_Click(object sender, RoutedEventArgs e)
        {
            if (ToggleSubscribeButtonlabel.Text == "Subscribe")
            {
                _rcpClient = new Rpc.Client(new Uri(RpcUriTextbox.Text));

                var userName = UserNameTextbox.Text;
                var streamingUri = new Uri(StreamingUriTextbox.Text);
                var topic = TopicTextbox.Text;
                Log("Creating session...");
                
                _rcpClient.BeginLogIn(userName, PasswordTextbox.Text, loginResult =>
                {
                    try
                    {
                        _rcpClient.EndLogIn(loginResult);

                        _logger.DebugFormat("Session is: {0}", _rcpClient.SessionId);
                        Log("Creating streaming client...");
                        _streamingClient = StreamingClientFactory.CreateStreamingClient(streamingUri, userName, _rcpClient.SessionId);
                        _streamingClient.StatusChanged += (s, message) 
                                                          => Log(string.Format("Status update: {0}", message.Status));
                        _streamingClient.Connect();

                        Log("Listening to news stream...");
                        _newsListener = _streamingClient.BuildListener<NewsDTO>(topic);
                        _newsListener.Start();

                        _newsListener.MessageRecieved += (s, message) =>
                                                             {
                                                                 try
                                                                 {
                                                                     NewsDTO recievedNewsHeadline = message.Data;
                                                                     Log(
                                                                         string.Format(
                                                                             "Recieved: NewsDTO: StoryId {0}, Headline {1}, PublishDate = {2}",
                                                                             recievedNewsHeadline.StoryId, recievedNewsHeadline.Headline,
                                                                             recievedNewsHeadline.PublishDate.ToString("u")));
                                                                 }
                                                                 catch (Exception exception)
                                                                 {
                                                                     _logger.Error("Exception occured:", exception);
                                                                 }
                                                             };
                    }
                    catch (Exception exception)
                    {
                        _logger.Error("Exception occured:", exception);
                    }

                }, null);

                ToggleSubscribeButtonlabel.Text = "Stop";
            }
            else
            {
                try
                {
                    Log("Stopping listening to news stream...");

                    // D: abbreviating conditionals makes it hard to step 
                    // and is also a good way to get bugs. you may notice that I always use
                    // blocks. 

                    if (_newsListener != null)
                    {
                        _newsListener.Stop();
                    }
                    Log("Disconnecting from streaming server...");

                    if (_streamingClient != null)
                    {
                       _streamingClient.Disconnect();
                    }

                    Log("Deleting session...");

                    if (_rcpClient != null )
                    {
                        // REMOVEME: i commented this out and still getting the ObjectDisposed exception
                        // so it is not in the RpcClient

                        _rcpClient.BeginLogOut(logoutResult =>
                                                   {
                                                       // FIXME: id/session invalid - getting back LoggedOut: false

                                                        /*do nothing*/
                                                       var breakTarget = 0;
                                                   }, null);
                    }
                }
                catch (Exception exception)
                {
                    _logger.Error("Exception occured:", exception);
                }

                ToggleSubscribeButtonlabel.Text = "Subscribe";
            }
            
        }
Exemple #42
0
        void SubscribeNewsUpdates(Action<NewsDTO> onUpdate, Action<Exception> onError)
        {
            _client = new Client(RPC_URI);
            _client.BeginLogIn(USERNAME, PASSWORD,
                ar =>
                {
                    try
                    {
                        _client.EndLogIn(ar);
                        Debug.WriteLine("Login ok");

                        _streamingClient = StreamingClientFactory.CreateStreamingClient(
                            STREAMING_URI, USERNAME, _client.SessionId);
                        _streamingClient.Connect();
                        Debug.WriteLine("\r\n\r\n\r\n\r\n\r\nStreaming connected ok");

                        _newsListener = _streamingClient.BuildListener<NewsDTO>("NEWS.MOCKHEADLINES.UK");
                        _newsListener.MessageRecieved +=
                            (s, e) =>
                            {
                                var msg = e.Data.Headline;
                                Debug.WriteLine(msg);
                                //onUpdate(e.Data);
                            };
                        _newsListener.Start();

                        Debug.WriteLine("\r\n\r\n\r\n\r\n\r\nListener started ok");
                    }
                    catch (Exception exc)
                    {
                        onError(exc);
                    }
                }, null);
        }
Exemple #43
0
        // only listening to one news topic at a time. right now options are US, UK and ALL.

        public void SetNewsTopic(string topic)
        {
            if (_newsListener != null)
            {
                _newsListener.MessageReceived -= NewsListenerMessageReceived;
                _newsListener.Stop();
                _newsListener = null;
            }

            _newsListener = StreamingClient.BuildNewsHeadlinesListener(topic);
            _newsListener.MessageReceived += NewsListenerMessageReceived;
            
        }
 private void BuildListener_CITYINDEXSTREAMING_DataAdapterSet()
 {
     LogToScreen("building listener on CITYINDEXSTREAMING data adapter");
     _priceListener = StreamingClient.BuildPricesListener(PRICEMARKETIDS);
     _priceListener.MessageReceived += PriceListenerMessageReceived;
     LogToScreen("listener on CITYINDEXSTREAMING built");
 }
 private void BuildListener_CITYINDEXSTREAMINGDEFAULTPRICES_DataAdapterSet()
 {
     LogToScreen("building listener on CITYINDEXSTREAMINGDEFAULTPRICES data adapter");
     _defaultPriceListener = StreamingClient.BuildDefaultPricesListener(ACCOUNTOPERATORID);
     _defaultPriceListener.MessageReceived += _defaultPricesListener_MessageReceived;
     LogToScreen("listener on CITYINDEXSTREAMING built");
 }
 private void BuildListener_STREAMINGCLIENTACCOUNT_DataAdapterSet()
 {
     LogToScreen("building listener on CITYINDEXCLIENTACCOUNT data adapter");
     _clientAccountMarginsListener = StreamingClient.BuildClientAccountMarginListener();
     _clientAccountMarginsListener.MessageReceived += ClientAccountMarginsListenerMessageReceived;
     Dispatcher.BeginInvoke(() => statusUpdatesListBox.Items.Add("listener on CITYINDEXCLIENTACCOUNT built"));
 }
 private void BuildListener_STREAMINGTRADINGACCOUNT_DataAdapterSet()
 {
     LogToScreen("building listener on CITYINDEXTRADINGACCOUNT data adapter");
     _quotesListener = StreamingClient.BuildQuotesListener();
     _quotesListener.MessageReceived += _quotesListener_MessageReceived;
     Dispatcher.BeginInvoke(() => statusUpdatesListBox.Items.Add("listener on CITYINDEXTRADINGACCOUNT built"));
 }
Exemple #48
0
 private void KillPriceListener()
 {
     _pricesListener.MessageReceived -= (PricesListenerMessageReceived);
     _pricesListener.Stop();
     _pricesListener = null;
 }
        private void StartButtonClick(object sender, RoutedEventArgs e)
        {
            Dispatcher.BeginInvoke(() => { listBox2.Items.Add("Starting"); });

            Dispatcher.BeginInvoke(() =>
            {
                listBox1.Items.Clear();
                listBox2.Items.Clear();
                listBox3.Items.Clear();

                StartButton.IsEnabled = false;
                StopButton.IsEnabled = false;
                 

                _backgroundRpcStop = false;
                _backgroundRpc = new Thread(() =>
                                                {
                                                    while (_backgroundRpcStop==false)
                                                    {
                                                        new AutoResetEvent(false).WaitOne(100000);
                                                        var marketInfo = rpcClient.Market.GetMarketInformation("400535967");
                                                        Dispatcher.BeginInvoke(() => listBox3.Items.Add(marketInfo.MarketInformation.MarketId));
                                                    }
                                                    return;
                                                });
                _backgroundRpc.Start();
                new Thread(() =>
                {

                    Debug.WriteLine("building listener2");
                    _listener = _streamingClient.BuildPricesListener(400535967, 81136, 400509294, 400535971, 80902, 400509295, 400193864, 400525367, 80926, 400498641, 400193866, 91047, 400194551, 121766, 400172033, 139144);
                    _listener.MessageReceived += ListenerMessageReceived;
                    Debug.WriteLine("building listener");

                    _listener2 = _streamingClient.BuildDefaultPricesListener(2347);
                    _listener2.MessageReceived += Listener2MessageReceived;
                    Debug.WriteLine("listener started");
                    Debug.WriteLine("listener2 started");

                    Dispatcher.BeginInvoke(() =>
                    {
                        StartButton.IsEnabled = false;
                        StopButton.IsEnabled = true;
                    });

                }).Start();



            });

        }
Exemple #50
0
 private void RestartPriceListener(params int[] markets)
 {
     if (_pricesListener != null)
     {
         KillPriceListener();
     }
     
     _pricesListener = StreamingClient.BuildPricesListener(markets);
     _pricesListener.MessageReceived += (PricesListenerMessageReceived);
     
 }