Remote server application to manage "Key=Value" type of strings provided by client applications.
- Implemented in C
- Works as daemon
- Server port can be provided by
server.configfile (sample can be found uunderserverfolder). If config is not provided55555is used by default. - Stores keys and values
- Provides the following operation to the clients:
- Insert, Delete, List, Search, Count
- Connection via TCP/IP
- Handles multiple connections without threads
- Implemented in C
- Accepts server configuration (IP and port) as a command line argument in "IP:Port" format
- Provides the following operations:
- list-keys - Get and print all Keys from the server
- put Key=Value - Send Key/Value pair to server to store
- get Key - Get value for specified Key
- del Key - Delete Key/Value pair with specified Key form the server
- count - Get the count of the Key/Value pairs stored on the server
- Improve transport to be able to receive replies chunk by chunk
- Extend to support IP6
- Support sending multiple Key/Value pairs in a single request
- Extend PUT request to be able to specify what to do if Key already exisits (fail/override/keep both)
- Add logging
- Improve error reporting/handling
- Improve input data error handling and client application robustness
Following tools are required for successful build and execution of the project.
- GCC and G++.
- CMake (version 3.18 or higher)
- GoogleTest
- doxygen
Following external libraries are used:
- Apache Portable Runtime v1.7 (https://apr.apache.org/).
Used to work with hash tables and file IO. The library is precompiled and stored under
externalfolder in the repository.
- To build the server, client as well as tests
./common/build/build.shcommand should be executed. - To generate doxygen documentation
./common/build/doc_gen.shshould be executed. Documentation will be generated in the./docsfolder. - To clean all temporary generated file
./common/build/clean.shshould be executed.
TBD