This project developed as a part of technical interview process for C++ Software Development position in Clay.
As a part of project set of applications and libraries together with their tests and documentation are implemented.
SET <key> <value>
GET <key>
DELETE <key>
./scripts/build_and_run_kvp_server.sh
./scripts/build_and_run_kvp_client.sh
./scripts/build_and_run_tests.sh
./scripts/generate_doc.sh
./scripts/watch_kvp_storage.sh
- Following components are implemented
- Application
- kvp_server
- kvp_client
- Library
- kvp_app
- kvp_store
- salto_ipc
- Tests
- src (unit tests for components located in src folder)
- lib (unit tests for components located in lib folder)
- Application
- Supports following commands:
- GET
- SET
- DELETE
- Supports 2 different input methods:
- IPC messages (from kvp_client app)
- stdin
- Supports following commands:
- GET
- SET
- DELETE
- Supports 2 different input methods: 2) stdin
- Sends json encoded messages to kvp_server by using boost::interprocess::ipc::message_queue
- Provides a generic infrastructure for implementing server/client applications
- Event registration
- Event loop support
- ipc infrastructure (through salto_ipc library)
- Library for storing key/value pairs with backing storage support as it is described in the project description
- IPC infrasture
- Links to 3rd party libraries
- boost::interprocess
- nholmann::json
- GoogleTest framework is utilized to implement unit tests.