MultiConnection независимая работа адаптеров


MultiConnection независимая работа адаптеров
Atom
9/24/2018


Здравствуйте. Я добавляю в коннектор два адаптера:
Code

_connector.Adapter.InnerAdapters.AddRange(new MessageAdapter[]
{
new LuaFixMarketDataMessageAdapter(_connector.TransactionIdGenerator){/*Инициализация*/},
new TransaqMessageAdapter(_connector.TransactionIdGenerator){/*Инициализация*/}
});

Могу ли я сними работать не зависимо? То есть подключать и отключать их по отдельности, запрашивать свечи одного инструмента от обоих адаптеров либо только от одного т.д.



Thanks:


Support

Avatar
Date: 9/25/2018
Reply


Добрый день

Выключение адаптеров возможно через свойство Connector.Adapter.InnerAdapters передав в него значение -1.

Отправка сообщений в конкретный адаптер осуществляется через параметр adapter в методе LookupSecurities
Thanks:

Константин

Avatar
Date: 9/27/2018
Reply


Здравствуйте. Про значение -1 не понял. Можно поподробнее что значит передать значение -1?
Thanks:

Support

Avatar
Date: 9/27/2018
Reply


Код ниже выключает адаптер из коннектора, не удаляя его физически

Code
Connector.Adapter.InnerAdapters[transaqAdapter] = -1;
Thanks:

Константин

Avatar
Date: 9/28/2018
Reply


То есть для того что бы мне проверить подключение одного конкретного адаптера (например LuaFixMarketDataMessageAdapter) нужно сделать так?
Code

//Выключаем которые проверять на подключение не нужно
Connector.Adapter.InnerAdapters[transaqAdapter] = -1;
Connector.Adapter.InnerAdapters[....] = -1;
Connector.Adapter.InnerAdapters[....] = -1;

Connector.ConnectedEx += ConnectAction; //Подписаться на успешное подключения адаптера
Connector.ConnectionErrorEx += ConnectErrorAction; //Подписаться на ошибки подключения адаптера
Connector.Connect();

void ConnectErrorAction(IMessageAdapter messageAdapter1, Exception exception)
{
//Ошибка подключения
}
void ConnectAction(IMessageAdapter adapter)
{
//подключение установлено;
Connector.Disconnect();

//Включаем все остальные адаптеры
Connector.Adapter.InnerAdapters[transaqAdapter] = 1;
Connector.Adapter.InnerAdapters[....] = 1;
Connector.Adapter.InnerAdapters[....] = 1;
}

Не ругайтесь сильно... Код набросал на коленке для общего представления алгоритма.
И еще вопрос. Событие Connector.Connected(); срабатывает при успешном подключении любого из адаптераов?
Thanks:

Константин

Avatar
Date: 10/3/2018
Reply


???
Thanks:

Support

Avatar
Date: 10/4/2018
Reply


Добрый день

Событие Connected вызывается один или для каждого адаптера в зависимости от опции Connector.RaiseConnectedOnFirstAdapter Событие ConnectedEx вызывается для каждого адаптера всегда.
Thanks:

Константин

Avatar
Date: 10/5/2018
Reply


Здравствуйте!
Не могу разобраться с получением инструментов от разных адаптеров.
Использую LuaFixMarketDataMessageAdapter и TransaqMessageAdapter.
Сначала пытаюсь получить инструменты от TransaqMessageAdapter так:

Code
Connector.LookupSecuritiesResult += (exception, securities) => { };
Connector.Adapter.InnerAdapters[LuaFixMarketDataMessageAdapter ] = -1;
Connector.LookupSecurities(new Security(), TransaqMessageAdapter);

Инструменты от TransaqMessageAdapter приходят.
Но когда далее пытаюсь получить инструменты от LuaFixMarketDataMessageAdapter так:

Code
Connector.Adapter.InnerAdapters[TransaqMessageAdapter] = -1;
Connector.Adapter.InnerAdapters[LuaFixMarketDataMessageAdapter ] = 1;
Connector.LookupSecurities(new Security(), LuaFixMarketDataMessageAdapter );

то инструменты не приходят.
Connector содержит инструменты от TransaqMessageAdapter.
Как можно получать инструменты от разных адаптеров?
Thanks:

Support

Avatar
Date: 10/5/2018
Reply


Добрый день

Пришлите пожалуйста лог Луа.
Thanks:

Константин

Avatar
Date: 10/8/2018
Reply


Вроде бы разобрался. Инструменты приходят от обоих адаптеров. Просто запутался в событиях LookupSecuritiesResult и NewSecurities. Инструменты приходят при подключении коннектора.
Мне не понятно почему при получении инструментов адаптера TransaqMessageAdapter срабатывает только событие NewSecurities, а при получении инструментов FixMarketDataMessageAdapter срабатывают и NewSecurities и LookupSecuritiesResult.
В чем разница этих событий?
Все инструменты приходят в одну коллекцию Connector.Securities. Есть ли способ отфильтровать инструменты по адаптеру?
Thanks:

Support

Avatar
Date: 10/9/2018
Reply


Добрый день

NewSecurity вызывается постоянно как только появляется в системе новый инструмент. LookupSecuritiesResult вызывается только при запросе на поиск инструментов.

Инструменты одни единые на разные подключения. В случае множества подключений рекомендуем выключить Connector.UpdateSecuritiesByLevel1 с целью предотвращения перезаписи данных.
Thanks:


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

loading
clippy