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)); }
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())); }
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())); }
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)); }