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


У нас там ещё и 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 классов быть не должно.

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

3) Необходимо удалить TableRegistry, как тогда будет работать Stream без знаний о текущей таблице?
Спасибо:

Mikhail Sukhov

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


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

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


2. Через reflection идет инициализация текущей структуры. Тоесть если ты что-то со структурой классов делаешь то и рефлекшен тебе нужно изменить.
3. Так же как и сейчас, через 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