Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9

Продолжаем практические занятия по созданию новых источников для роботов в 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

Мар 24, 2025 - 19:34
 0
Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9

Продолжаем практические занятия по созданию новых источников для роботов в OsEngine.

Сегодня говорим про то, как расширить функционал коннектора для раздачи новых данных. И добавление нового разрешения для коннекторов под источник.

Серия постов строго для программистов со стажем, которые не только знают C# на уровне мидлов и сеньоров, но и УЖЕ разбираются в том, как делать новые серверы подключения к OsEngine.

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9

1. Добавляем разрешение для коннектора. IServerPermission.

Для этого идём в интерфейс IServerPermission и добавляем туда свойство, обозначающее наличие реализации доступа к данным для источника.

В нашем случае (а мы хотим добавить источник «Новости») итоговый коннектор должен поддерживать подписку на новости. Мы должны это обозначить:

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9 
Соответственно:

  1. False будет означать, что такой тип работы с коннектором не поддерживается.
  2. True – всё реализовано и работает. Можно брать из коннектора новости.

ВАЖНО!!!

Не для всех типов источников это необходимо. Т.к. некоторые из них не нуждаются в каких-то новых данных с биржи. Например, индексы или пары просто расширяют возможности для работы с уже готовыми данными. Но в случае с новостями нам нужно обозначить новое разрешение для коннектора.

После того как интерфейс IServerPermission будет модернизирован, потребуется добавить во все разрешения в проекте новое поле со значением False. Вот так:

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9

 

2. Добавляем метод подписки и событие в конечную реализацию коннекторов. IServerRealization.

Идём в класс IServerRealization:

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9

  1. Добавляем нужный нам метод для подписки на данные. Если возвращает True, значит подписались успешно.
  2. Событие для отсылки новостей наверх.
  3. В каждой реализации сервера нужно добавить реализацию этих двух членов.

 

3. Добавляем методы подписки и события в IServer.

Поднимаемся по архитектуре и добавляем расширение для IServer:

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9

  1. Добавляем метод для подписки.
  2. Добавляем событие для отправки новости вверх по архитектуре.
  3. Добавляем метод и событие в реализации IServer. Пока пустые.

 

4. Добавляем хранение и пересылку новых данных в AServer.

Во время создания реализации сервера нужно подписаться на новое событие, которое мы добавили:

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9

Создаём хранилище для новостей из коннекторов:

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9

Обрабатываем событие новой новости, в нём мы складываем данные в очередь:

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9

Далее делаем пересылку приказа о подписке на новости в реализацию:

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9

Далее, добавляем в поток, рассылающий данные роботам, разбор очереди:

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9 

 

5. Реализация подписки на новости в TransaqConnector.

Транзак коннектор и так отсылает новости в поток данных, поэтому делаем здесь просто флаг о том, что надо отсылать сообщения наверх:

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9 
Далее, проверяя флаг в месте разбора данных, передаём данные на разбор и отсылку наверх:

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9

Удачных алгоритмов!

Оглавление данной серии статей здесь. https://smart-lab.ru/company/os_engine/blog/1126598.php

Комментарии открыты для друзей!

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9

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

Создание источника. Расширение функционала коннектора. Источники робота OsEngine #9