An open API service indexing awesome lists of open source software.

https://github.com/aalexuser/low-level-programming-3


https://github.com/aalexuser/low-level-programming-3

Last synced: 21 days ago
JSON representation

Awesome Lists containing this project

README

          

# LLP 3
## Запуск
```
Сервер (server)
cd build
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_BENCHMARK=OFF -DBUILD_TESTING=ON ..
make
./db_exe

Клиент (client)
cd build
cmake ..
make
./lab3-client 127.0.0.1 8080
```
## Задание
На базе данного транспортного формата описать схему протокола обмена информацией и воспользоваться
существующей библиотекой по выбору для реализации модуля, обеспечивающего его функционирование.
Протокол должен включать представление информации о командах создания, выборки, модификации и
удаления данных в соответствии с данной формой, и результатах их выполнения.

Используя созданные в результате выполнения заданий модули, разработать в виде консольного приложения
две программы: клиентскую и серверную части. Серверная часть – получающая по сети запросы и операции
описанного формата и последовательно выполняющая их над файлом данных с помощью модуля из первого
задания. Имя фала данных для работы получать с аргументами командной строки, создавать новый в случае
его отсутствия. Клиентская часть – в цикле получающая на стандартный ввод текст команд, извлекающая из
него информацию о запрашиваемой операции с помощью модуля из второго задания и пересылающая её на
сервер с помощью модуля для обмена информацией, получающая ответ и выводящая его в человеко-
понятном виде в стандартный вывод.

## Порядок выполнения
1. Изучить выбранную библиотеку
- Библиотека должна обеспечивать сериализацию и десериализацию с валидацией в соответствии со схемой
- Предпочтителен выбор библиотек, поддерживающих кодогенерацию на основе схемы
- Библиотека может поддерживать передачу данных посредством TCP соединения
- Иначе, использовать сетевые сокеты посредством API ОС
- Библиотека может обеспечивать диспетчеризацию удалённых вызовов
- Иначе, реализовать диспетчеризацию вызовов на основе информации о виде команды
2. На основе существующей библиотеки реализовать модуль, обеспечивающий взаимодействие
- Описать схему протокола в поддерживаемом библиотекой формате
- Описание должно включать информацию о командах, их аргументах и результатах
- Схема может включать дополнительные сущности (например, для итератора)
- Подключить библиотеку к проекту и сформировать публичный интерфейс модуля с использованием встроенных или сгенерированных структур данных используемой библиотеки
- Поддержать установление соединения, отправку команд и получение их результатов
- Поддержать приём входящих соединений, приём команд и отправку их результатов
- Реализовать публичный интерфейс посредством библиотеки в соответствии с п1
3. Реализовать серверную часть в виде консольного приложения
- В качестве аргументов командной строки приложение принимает:
- Адрес локальной конечной точки для прослушивания входящих соединений
- Имя файла данных, который необходимо открыть, если он существует, иначе создать
- Работает с файлом данных посредством модуля из задания 1
- Принимает входящие соединения и взаимодействует с клиентами посредством модуля из п2
- Поступающая информация о запрашиваемых операциях преобразуется из структур данных модуля взаимодействия к структурам данных модуля управления данными и наоборот
4. Реализовать клиентскую часть в виде консольного приложения
- В качестве аргументов командной строки приложение принимает адрес конечной точки для подключения
- Подключается к серверу и взаимодействует с ним посредством модуля из п2
- Читает со стандартного ввода текст команд и анализирует их посредством модуля из задания 2
- Преобразует результат разбора команды к структурам данных модуля из п2, передаёт их для обработки на сервер, возвращаемые результаты выводит в стандартный поток вывода

5. Результаты тестирования представить в виде отчёта, в который включить:
- В части 3 привести пример сеанса работы разработанных программ
- В части 4 описать решение, реализованное в соответствии с пп.2-4
- В часть 5 включить составленную схему п.2а