-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Добро пожаловать на crm-server wiki!
Данный проект является совместной работой студентов в рамках производственной практики. Было разработано два микросервиса, которые взаимодействуют друг с другом. Первый - клиентская часть, второй - сервер. Клиент представляет собой графический интерфейс, в котором пользователь может управлять абстрактным роботом на карте из клеток 10x10. В приложении имеется возможность управлять его перемещением, поворотм, стрельбой и починкой его частей, а так же отслеживать состояние всех компонентов. При каждом взаимодействии пользователя с интерфейсом, приложение отправляет запрос на сервер по протоколу HTTP. Сервер в свою очередь обрабатывает эти запросы. Если пользователь вносит какие-либо изменения в состояние робота, он получает данную информацию, пропускает ее через алгоритмы, фиксирует изменения в конфигурационном файле и отправляет ответ, от которого зависит отображение актуальной информации о состоянии робота.
- Drogon framework - используется для работы с HTTP-запросами
- Docker - сборка сервера в контейнер для его запуска
- Google Test - модульное тестирование
- HTTP - протокол соединения между сервером и клиентом
- Языка программирования: C++
В данном блоке расмотрим отдельные функции, которые отвечают за обработку запросов, алгоритмы перемещения, стрельбы, починки и т.д.
Контроллер, который отвечает за post-запросы по url /repair и /shoot. Контроллеры отвечают за возможность починить элементы робота и стрельбы соответсвенно.
Для того чтобы сделать выстрел клиент должен отправить запрос в формате JSON с координатами позиции по которому идет огонь: {"x" : 3,"y" : 3}.
Для починки элемента принимается JSON с id элемента, который пользователь хочет починить.
- {"id" : "right_leg_001"} - правая нога
- {"id" : "torso_001"} - торс
- {"id" : "left_leg_001"} - левая нога
- {"id" : "gun_manip_001"} - орудийный манипулятор
- {"id" : "gun_001"} - пушка
- {"id" : "grab_manip_001"} - схватовый манипулятор
Контроллер отечает за get-запросы по url /map. Сервер отправляет клиенту JSON-файл с актуальной картой, где отображены враги и положение робота.
Контроллер отечает за get-запросы по url /state. Он отвечает за получение информации следующих элементов:
- Координаты позиции робота
- Направление робота, куда он смотрит
- Состояние левой ноги
- Состояние правой ноги
- Состояние торса
- Состояние орудийного манипулятора
- Состояние пушки
- Состояние схавтового манипулятора