Продолжаем практические занятия по созданию новых источников для роботов в OsEngine.
Сегодня говорим про то, как расширить функционал коннектора для раздачи новых данных. И добавление нового разрешения для коннекторов под источник.
Серия постов строго для программистов со стажем, которые не только знают C# на уровне мидлов и сеньоров, но и УЖЕ разбираются в том, как делать новые серверы подключения к OsEngine.
1. Добавляем разрешение для коннектора. IServerPermission.
Для этого идём в интерфейс IServerPermission и добавляем туда свойство, обозначающее наличие реализации доступа к данным для источника.
В нашем случае (а мы хотим добавить источник «Новости») итоговый коннектор должен поддерживать подписку на новости. Мы должны это обозначить:
- False будет означать, что такой тип работы с коннектором не поддерживается.
- True – всё реализовано и работает. Можно брать из коннектора новости.
ВАЖНО!!!
Не для всех типов источников это необходимо. Т.к. некоторые из них не нуждаются в каких-то новых данных с биржи. Например, индексы или пары просто расширяют возможности для работы с уже готовыми данными. Но в случае с новостями нам нужно обозначить новое разрешение для коннектора.
После того как интерфейс IServerPermission будет модернизирован, потребуется добавить во все разрешения в проекте новое поле со значением False. Вот так:
2. Добавляем метод подписки и событие в конечную реализацию коннекторов. IServerRealization.
Идём в класс IServerRealization:
- Добавляем нужный нам метод для подписки на данные. Если возвращает True, значит подписались успешно.
- Событие для отсылки новостей наверх.
- В каждой реализации сервера нужно добавить реализацию этих двух членов.
3. Добавляем методы подписки и события в IServer.
Поднимаемся по архитектуре и добавляем расширение для IServer:
- Добавляем метод для подписки.
- Добавляем событие для отправки новости вверх по архитектуре.
- Добавляем метод и событие в реализации IServer. Пока пустые.
4. Добавляем хранение и пересылку новых данных в AServer.
Во время создания реализации сервера нужно подписаться на новое событие, которое мы добавили:
Создаём хранилище для новостей из коннекторов:
Обрабатываем событие новой новости, в нём мы складываем данные в очередь:
Далее делаем пересылку приказа о подписке на новости в реализацию:
Далее, добавляем в поток, рассылающий данные роботам, разбор очереди:
5. Реализация подписки на новости в TransaqConnector.
Транзак коннектор и так отсылает новости в поток данных, поэтому делаем здесь просто флаг о том, что надо отсылать сообщения наверх:
Далее, проверяя флаг в месте разбора данных, передаём данные на разбор и отсылку наверх:
Удачных алгоритмов!
Оглавление данной серии статей здесь. https://smart-lab.ru/company/os_engine/blog/1126598.php
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР и OsEngine: https://smart-lab.ru/company/os_engine/blog/972745.php
Подробнее https://smart-lab.ru/compan...












