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

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


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


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

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




Спасибо:


Support

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


Добрый день

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

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

Спасибо:

Константин

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


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

Спасибо:

Support

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


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

Connector.Adapter.InnerAdapters[transaqAdapter] = -1;
Спасибо:

Константин

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


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


//Выключаем которые проверять на подключение не нужно
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(); срабатывает при успешном подключении любого из адаптераов?

Спасибо:

Константин

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


???

Спасибо:

Support

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


Добрый день

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

Спасибо:

Константин

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


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

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

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

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

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

Спасибо:

Support

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


Добрый день

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

Спасибо:

Константин

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


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

Спасибо:

Support

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


Добрый день

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

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

Спасибо:


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

loading
clippy