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

Рефакторинг Plaza коннектора
Atom
9/16/2011
Alexander


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

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

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

Tags:


Thanks:


1 2 3  > >>
Mikhail Sukhov

Avatar
Date: 9/16/2011
Reply


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


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

Use cases:

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

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


Code
var trader1 = new PlazaTrader();
trader1.StartExport(trader1.FutureTable);

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


Code
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
Thanks:

Alexander

Avatar
Date: 9/16/2011
Reply


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


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

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

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

Mikhail Sukhov

Avatar
Date: 9/16/2011
Reply


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

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


2. Через reflection идет инициализация текущей структуры. Тоесть если ты что-то со структурой классов делаешь то и рефлекшен тебе нужно изменить.
3. Так же как и сейчас, через PlazaStream.Table.
Thanks:

Alexander

Avatar
Date: 9/16/2011
Reply


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

Code

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

?
Thanks:

Mikhail Sukhov

Avatar
Date: 9/16/2011
Reply


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

Code

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

?


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

Alexander

Avatar
Date: 9/16/2011
Reply


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

Mikhail Sukhov

Avatar
Date: 9/19/2011
Reply


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

Alexander

Avatar
Date: 9/19/2011
Reply


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


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

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

FiNick

Avatar
Date: 9/21/2011
Reply


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


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

Alexander

Avatar
Date: 9/22/2011
Reply


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


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


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

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy