Ejemplo n.º 1
0
        private void StreamCurrencies(object o)
        {
            var currencies = (ReactiveTable)o;

            var ccyPairId = 1;

            for (var i = 0; i < _currencyList.Length; i++)
            {
                for (var j = i + 1; j < _currencyList.Length; j++)
                {
                    var ccy1  = _currencyList[i];
                    var ccy2  = _currencyList[j];
                    var rowId = currencies.AddRow();
                    currencies.SetValue(FxTableDefinitions.CurrencyPair.Id, rowId, ccyPairId++);
                    currencies.SetValue(FxTableDefinitions.CurrencyPair.CcyPair, rowId, ccy1 + ccy2);
                    currencies.SetValue(FxTableDefinitions.CurrencyPair.Ccy1, rowId, ccy1);
                    currencies.SetValue(FxTableDefinitions.CurrencyPair.Ccy2, rowId, ccy2);
                }
            }

            var server = new ReactiveTableTcpServer <IReactiveTable>(() => new ProtobufTableEncoder(),
                                                                     new IPEndPoint(IPAddress.Loopback, (int)ServerPorts.Currencies),
                                                                     _finished,
                                                                     session => currencies);

            server.Start(new ProtobufEncoderState(FxTableDefinitions.CurrencyPair.ColumnsToFieldIds));
        }
Ejemplo n.º 2
0
        private void SetupFeedServer(IReactiveTable feedsAndClients, ReactiveBatchedPassThroughTable feedsTable, IReactiveTableProcessor <IReactiveTable> tableEncoder)
        {
//            feedsAndClients.Subscribe(update => Console.WriteLine(update.ToString()));

            var server = new ReactiveTableTcpServer <IReactiveTable>(() => tableEncoder,
                                                                     new IPEndPoint(IPAddress.Loopback, (int)ServerPorts.BrokerFeed),
                                                                     _finished,
                                                                     s => FilterFeedsForClientTable(s, feedsAndClients),
                                                                     () => UpdateClients(feedsTable));

            // Start the server in a new thread
            Task.Run(() => server.Start(GetEncoderState()));
        }
Ejemplo n.º 3
0
        private void SetupClientCcyPairServer(IWritableReactiveTable clientsTable, IReactiveTableProcessor <IWritableReactiveTable> tableDecoder)
        {
            clientsTable.Subscribe(update => Console.WriteLine("Server side: " + update.ToString()));

            // Used non-batched pass through as we won't be receiving much data.
            var server = new ReactiveTableTcpServer <IWritableReactiveTable>(
                () => tableDecoder,
                new IPEndPoint(IPAddress.Loopback, (int)ServerPorts.BrokerFeedClients),
                _finished,
                s => clientsTable);

            // Start the server in a new thread
            Task.Run(() => server.Start(GetDecoderState()));
        }
Ejemplo n.º 4
0
        private void StreamRates(object o)
        {
            var fxRates = (ReactiveTable)o;

            var ccyPairsToRowIds = new Dictionary <string, int>();

            AddRates(fxRates, ccyPairsToRowIds);
            UpdateRates(ccyPairsToRowIds, fxRates);

            Action updateTable = () => UpdateRates(ccyPairsToRowIds, fxRates, false);
            var    server      = new ReactiveTableTcpServer <IReactiveTable>(() => new ProtobufTableEncoder(),
                                                                             new IPEndPoint(IPAddress.Loopback, (int)ServerPorts.FxRates),
                                                                             _finished,
                                                                             session => fxRates,
                                                                             updateTable);

            server.Start(new ProtobufEncoderState(FxTableDefinitions.FxRates.ColumnsToFieldIds));
        }