Сервер представляет собой двухпоточную программу, состоящий из следующих потоков:
- поток чтения запросов - чтение запросов и добавление их в очередь;
- поток исполнения - последовательно берет из очереди запрос, выполняет парсинг команд, исполняет, формирует и отправляет ответы.
Список всех обрабатываемых запросов:
| Запрос | Описание |
|---|---|
| init <figure_type> | Запрос на инициализацию агента-фигуры. При успешной инициализации отправляет обратно сообщение со сгенерированным именем агента-фигуры: init ok <figure_name> |
| init_judge | Запрос на инициализацию агента-судьи. При успешной инициализации в ответ отправляет сообщение: init_judge ok |
| set_params <board_width> <board_height> | Запрос на изменение параметров доски. При успешном изменение параметров отправляет обратно сообщение: set_params ok |
| start_solving | Запрос на начало решения. После начала решения отправляет агенту-судье список всех агентов-фигур с их адресами: agents (<figure1_name> <figure1_port>) … |
| change_pos (<figure1_name> <figure1_x> <figure1_y>) ... | Запрос на изменение позиции агента-фигуры. После смены позиции отправляет всем агентам-фигурам обновленное состояние доски: board (<figure_name1> <figure_x1> <figure_y1>) ... |
| Остальные | Во всех остальных случаях, когда не удалось определить запрос, в ответ отправляется сообщение об ошике: bad_language |