Пример #1
0
        public static ReactiveTable CreateReactiveTableFull()
        {
            var table = new ReactiveTable();

            table.AddColumn(new ReactiveColumn <int>(TestTableColumns.IdColumn));
            table.AddColumn(new ReactiveColumn <string>(TestTableColumns.StringColumn));
            table.AddColumn(new ReactiveColumn <decimal>(TestTableColumns.DecimalColumn));
            table.AddColumn(new ReactiveColumn <bool>(TestTableColumns.BoolColumn));
            table.AddColumn(new ReactiveColumn <double>(TestTableColumns.DoubleColumn));
            table.AddColumn(new ReactiveColumn <short>(TestTableColumns.ShortColumn));
            table.AddColumn(new ReactiveColumn <long>(TestTableColumns.LongColumn));
            table.AddColumn(new ReactiveColumn <DateTime>(TestTableColumns.DateTimeColumn));
            table.AddColumn(new ReactiveColumn <TimeSpan>(TestTableColumns.TimespanColumn));
            table.AddColumn(new ReactiveColumn <Guid>(TestTableColumns.GuidColumn));
            table.AddColumn(new ReactiveColumn <float>(TestTableColumns.FloatColumn));
            table.AddColumn(new ReactiveColumn <byte>(TestTableColumns.ByteColumn));
            table.AddColumn(new ReactiveColumn <char>(TestTableColumns.CharColumn));
            return(table);
        }
        public AccountBalanceDataService(Dispatcher dispatcher, int maxEntries = int.MaxValue)
        {
            _maxEntries = maxEntries;
            People      = new ReactiveTable <PersonViewModel>();
            var basePersonColumns = new List <IReactiveColumn>
            {
                new ReactiveColumn <int>(PersonColumns.IdColumn),
                new ReactiveColumn <string>(PersonColumns.NameColumn)
            };

            var peopleWire = SetupPersonTable((IWritableReactiveTable)People, basePersonColumns, dispatcher);

            var baseAccountColumns = new List <IReactiveColumn>
            {
                new ReactiveColumn <int>(AccountColumns.IdColumn),
                new ReactiveColumn <int>(AccountColumns.PersonId),
                new ReactiveColumn <decimal>(AccountColumns.AccountBalance)
            };

            Accounts = new ReactiveTable();
            var accountsWire = SetupAccountTable((IWritableReactiveTable)Accounts, baseAccountColumns, dispatcher);

            AccountPeople = SetupAccountPeopleTable(Accounts, People);

            AddTestPeople(peopleWire);
            AddTestAccounts(accountsWire);

            var personDataThread = new Thread(StreamPersonData);

            personDataThread.IsBackground = true;
            personDataThread.Start(new StreamingState {
                Table = peopleWire, Running = _running, MaxEntries = _maxEntries
            });

            var accountDataThread = new Thread(StreamAccountData);

            accountDataThread.IsBackground = true;
            accountDataThread.Start(new StreamingState {
                Table = accountsWire, Running = _running, MaxEntries = _maxEntries
            });

            Thread.Sleep(GuiDisplayDelay);
        }
Пример #3
0
        public void Start()
        {
            Console.WriteLine("Starting broker service");
            _finished.Reset();

            var feedsOutputTable = new ReactiveTable();

            BrokerTableDefinition.SetupFeedTable(feedsOutputTable);
            var feeds = new ReactiveBatchedPassThroughTable(feedsOutputTable, new DefaultThreadMarshaller());

            var clientsTable = new ReactiveTable();

            BrokerTableDefinition.SetupClientFeedTable(clientsTable);

            SetupClientCcyPairServer(clientsTable, GetTableDecoder());
            SetupFeedServer(GetFeedsAndClients(clientsTable, feedsOutputTable), feeds, GetTableEncoder());

            StartBrokerFeeds(feeds);
            Console.WriteLine("Broker service started");
        }
Пример #4
0
        public void ShouldFlyweightShouldNotifyOfChanges()
        {
            var table = new ReactiveTable <TestModelFlyweight>();

            var row       = table.AddRow();
            var flyweight = table.Flyweights[0];

            var changes = new List <string>();

            flyweight.PropertyChanged += (sender, args) => changes.Add(args.PropertyName);

            table.SetValue("TestModelFlyweight.Id", row, 42);
            table.SetValue("TestModelFlyweight.Name", row, "Hello");
            table.SetValue("TestModelFlyweight.Value", row, 43m);
            var dateTime = DateTime.UtcNow;

            table.SetValue("TestModelFlyweight.Timestamp", row, dateTime);

            Check.That(changes).ContainsExactly("Id", "Name", "Value", "Timestamp");
        }
Пример #5
0
        public GroupedTableTest(int?drainTableLimit = null)
        {
            _drainTableLimit = drainTableLimit;
            _table1          = new ReactiveTable();
            var groupColumn = new ReactiveColumn <string>(GroupColumnId);

            _table1.AddColumn(groupColumn);
            var valueColumn = new ReactiveColumn <int>(ValueColumnId);

            _table1.AddColumn(valueColumn);

            var groupedTable = new AggregatedTable(_table1);

            groupedTable.GroupBy <string>(groupColumn.ColumnId);
            groupedTable.AddAggregate(groupColumn, CountColumnId, () => new Count <string>());
            groupedTable.AddAggregate(valueColumn, SumColumnId, () => new Sum <int>());
            groupedTable.AddAggregate(valueColumn, AverageColumnId, () => new Average <int>());
            groupedTable.AddAggregate(valueColumn, MinColumnId, () => new Min <int>());
            groupedTable.AddAggregate(valueColumn, MaxColumnId, () => new Max <int>());
        }
Пример #6
0
        public void UpdateTestRow(ReactiveTable table, int rowId, bool includeComplexTypes = true)
        {
            table.SetValue(TestTableColumns.IdColumn, rowId, 2);
            table.SetValue(TestTableColumns.StringColumn, rowId, "Bar");
            table.SetValue(TestTableColumns.BoolColumn, rowId, true);
            table.SetValue(TestTableColumns.DoubleColumn, rowId, 2222.23);
            table.SetValue(TestTableColumns.ShortColumn, rowId, (short)3131);
            table.SetValue(TestTableColumns.LongColumn, rowId, 11111111111111);
            table.SetValue(TestTableColumns.DecimalColumn, rowId, 7678.232m);

            if (includeComplexTypes)
            {
                table.SetValue(TestTableColumns.DateTimeColumn, rowId, new DateTime(1983, 07, 03));
                table.SetValue(TestTableColumns.TimespanColumn, rowId, TimeSpan.FromHours(1));
                table.SetValue(TestTableColumns.GuidColumn, rowId, Guid.NewGuid());
            }

            table.SetValue(TestTableColumns.FloatColumn, rowId, 1.2343f);
            table.SetValue(TestTableColumns.ByteColumn, rowId, (byte)234);
            table.SetValue(TestTableColumns.CharColumn, rowId, 'a');
        }
Пример #7
0
        public static int AddTestRow(ReactiveTable table, bool includeComplexTypes = true)
        {
            var rowId = table.AddRow();

            table.SetValue(TestTableColumns.IdColumn, rowId, 1);
            table.SetValue(TestTableColumns.StringColumn, rowId, "Foo");
            table.SetValue(TestTableColumns.BoolColumn, rowId, false);
            table.SetValue(TestTableColumns.DoubleColumn, rowId, 1111.232);
            table.SetValue(TestTableColumns.ShortColumn, rowId, (short)4242);
            table.SetValue(TestTableColumns.LongColumn, rowId, 22222222222222);
            table.SetValue(TestTableColumns.DecimalColumn, rowId, 2132.233m);

            if (includeComplexTypes)
            {
                table.SetValue(TestTableColumns.DateTimeColumn, rowId, new DateTime(1982, 04, 10));
                table.SetValue(TestTableColumns.TimespanColumn, rowId, TimeSpan.FromDays(1));
                table.SetValue(TestTableColumns.GuidColumn, rowId, Guid.NewGuid());
            }

            table.SetValue(TestTableColumns.FloatColumn, rowId, 6.6542f);
            table.SetValue(TestTableColumns.ByteColumn, rowId, (byte)188);
            table.SetValue(TestTableColumns.CharColumn, rowId, 'D');
            return(rowId);
        }
Пример #8
0
 public static void SetAndTestValueNotPresent <T>(ReactiveTable setTable, ReactiveTable getTable, int setRowId, int getRowId, T value, string columnId)
 {
     setTable.SetValue(columnId, setRowId, value);
     Assert.AreEqual(default(T), getTable.GetValue <T>(columnId, getRowId));
 }
Пример #9
0
 public static void TestValue <T>(ReactiveTable table, int rowId, T value, string columnId)
 {
     Assert.AreEqual(value, table.GetValue <T>(columnId, rowId));
 }
Пример #10
0
 public static void SetAndTestValue <T>(ReactiveTable setTable, ReactiveTable getTable, int setRowId, int getRowId, T value, string columnId)
 {
     setTable.SetValue(columnId, setRowId, value);
     TestValue(getTable, getRowId, value, columnId);
 }
 public FxCurrencyPairViewModel(ReactiveTable table, int rowId)
 {
     _table = table;
     _rowId = rowId;
 }
Пример #12
0
 public ReactiveTableEnumerator(ReactiveTable table)
 {
     _table = table;
     _rows  = _table.GetRows().GetEnumerator();
 }
 public ReactivePassThroughTable(ReactiveTable targetTable, IThreadMarshaller marshaller)
 {
     _targetTargetTable = targetTable;
     _marshaller        = marshaller;
 }
Пример #14
0
 public FxDataService()
 {
     _currencies = GetCurrenciesTable();
     _fxRates    = GetRatesTable();
 }
 public ReactiveObservableCollection(ReactiveTable table)
 {
     _table = table;
     _table.Subscribe(OnNext);
 }