Рефакторинг Plaza коннектора
Atom
16.09.2011
Alexander


У нас там ещё и Reflection используется...

Давайте постепенно будем менять структуру. Какие цели - избавиться от текущей перегруженности, добавить возможность поддержать несколько подключений.

Какие у кого предложения по структуре?


Теги:


Спасибо:


1 2 3  > >>
Mikhail Sukhov

Фотография
Дата: 16.09.2011
Ответить


Alexander: Какие у кого предложения по структуре?

Метаданные (по сути под этим можно считать только наследники от PlazaColumns) нужно отвязать от PlazaTable. Далее, или убрать TableRegistry, или убрать StreamRegistry.

Use cases:

var trader1 = new PlazaTrader();
trader1.FutureTable.Columns.Add(PlazaFututeColumns.Volatility);

var trader2 = new PlazaTrader();
trader2.OptionTable.Columns.Add(PlazaOptionColumns.Volatility);
var trader1 = new PlazaTrader();
trader1.StartExport(trader1.FutureTable);

var trader2 = new PlazaTrader();
trader2.StartExport(trader2.OptionTable);
var trader = new PlazaTrader();

// или
var stream = trader.StartExport(PlazaTableRegistry.Smile);
stream.NewData += 

// или
var stream = trader.StreamRegistry.Smile;
stream.NewData += 
trader.StartExport(trader.StreamRegistry);

Второй вариант мне нравится больше. Соответственно если оставляем реестр стримов, то первые 2 кейса переделываем на использование trader.StreamRegistry

Спасибо:

Alexander

Фотография
Дата: 16.09.2011
Ответить


  1. Как раз уже стал переделывать под второй вариант, мне он тоже больше нравится. PlazaTrader знает только о StreamRegistry, причём именно так:
var stream = trader.StreamRegistry.Smile;
stream.NewData += 
trader.StartExport(trader.StreamRegistry);

ведь не надо забывать о необходимости нескольких подключений - static классов быть не должно.

  1. PlazaTable тоже уже стал удалять из всех метаданных, столкнулся с проблемой рефлектора - GetAllMetadata выкидывает exception.

  2. Необходимо удалить TableRegistry, как тогда будет работать Stream без знаний о текущей таблице?

Спасибо:

Mikhail Sukhov

Фотография
Дата: 16.09.2011
Ответить


Alexander: 2) PlazaTable тоже уже стал удалять из всех метаданных, столкнулся с проблемой рефлектора - GetAllMetadata выкидывает exception.

  1. Необходимо удалить TableRegistry, как тогда будет работать Stream без знаний о текущей таблице?
  1. Через reflection идет инициализация текущей структуры. Тоесть если ты что-то со структурой классов делаешь то и рефлекшен тебе нужно изменить.
  2. Так же как и сейчас, через PlazaStream.Table.
Спасибо:

Alexander

Фотография
Дата: 16.09.2011
Ответить


Mikhail Sukhov: 3. Так же как и сейчас, через PlazaStream.Table.


            streams.Add(Aggregation20FutureStream = new PlazaStream(
                new PlazaTable(PlazaTableSystemName.OrdersAggr, ReplicationStream.Aggr20Future, "Фьючерсы: стакан глубиной 20 котировок")
                ));

?

Спасибо:

Mikhail Sukhov

Фотография
Дата: 16.09.2011
Ответить


Alexander:

Mikhail Sukhov: 3. Так же как и сейчас, через PlazaStream.Table.

        streams.Add(Aggregation20FutureStream = new PlazaStream(
            new PlazaTable(PlazaTableSystemName.OrdersAggr, ReplicationStream.Aggr20Future, "Фьючерсы: стакан глубиной 20 котировок")
            ));
> ?

Да, думаю так и нужно сделать... Может еще проверишь заодно, влияет ли как-нибудь на производительность кол-во созданных стримов (не активных, тоесть данные по ним не текут).
Спасибо:

Alexander

Фотография
Дата: 16.09.2011
Ответить


Текущие таски:

  1. избавиться от перегруженности текущей структуры классов - TableRegistry, ColumnRegistry, StreamRegistry;
  2. убрать зависимость метаданных от Table;
  3. убрать статические классы;
  4. протестировать возможность подключения и получения данных по нескольким логинам.
Спасибо:

Mikhail Sukhov

Фотография
Дата: 19.09.2011
Ответить


Рефакторинг сделал.

Спасибо:

Alexander

Фотография
Дата: 19.09.2011
Ответить


Mikhail Sukhov: Рефакторинг сделал.

Сейчас добавление столбцов происходит после инициализации PlazaStream, в связи с этим возникают проблемы в PlazaRecord.

P.S. fixed. Но данные всё равно не поступают.

Спасибо:

FiNick

Фотография
Дата: 21.09.2011
Ответить


Mikhail Sukhov: Рефакторинг сделал.

Компилил последние исходники, тестил, существующие проблемы не решены: большие задержки при выставлении заявок, загрузка проца под 100% после дисконнекта. Там еще ошибка на SimpleGUI вылетает при подключении(запостил в другой теме).

Спасибо:

Alexander

Фотография
Дата: 22.09.2011
Ответить


FiNick:

Mikhail Sukhov: Рефакторинг сделал.

Компилил последние исходники, тестил, существующие проблемы не решены: большие задержки при выставлении заявок, загрузка проца под 100% после дисконнекта. Там еще ошибка на SimpleGUI вылетает при подключении(запостил в другой теме).

Поправите? Доступ к исходникам у вас вроде есть :)

Спасибо:
1 2 3  > >>

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy