{"id":25219902,"url":"https://github.com/migpovrap/keyvaluestore","last_synced_at":"2026-03-01T04:02:25.934Z","repository":{"id":274221804,"uuid":"888559868","full_name":"migpovrap/KeyValueStore","owner":"migpovrap","description":"Key Value Store developed for our Operating Systems class.","archived":false,"fork":false,"pushed_at":"2025-01-25T19:07:19.000Z","size":979,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-10T21:42:04.207Z","etag":null,"topics":["c","multithreading","operating-systems","posix"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/migpovrap.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-14T15:55:30.000Z","updated_at":"2025-01-25T19:05:07.000Z","dependencies_parsed_at":"2025-01-25T20:17:56.205Z","dependency_job_id":"85420831-0907-4e9c-b247-61eece09345b","html_url":"https://github.com/migpovrap/KeyValueStore","commit_stats":null,"previous_names":["migpovrap/keyvaluestore"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/migpovrap%2FKeyValueStore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/migpovrap%2FKeyValueStore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/migpovrap%2FKeyValueStore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/migpovrap%2FKeyValueStore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/migpovrap","download_url":"https://codeload.github.com/migpovrap/KeyValueStore/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247325647,"owners_count":20920713,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","multithreading","operating-systems","posix"],"created_at":"2025-02-10T21:42:06.085Z","updated_at":"2026-03-01T04:02:20.885Z","avatar_url":"https://github.com/migpovrap.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KVS\n\nKVS is a key-value store system, developed for our Operating Systems class. This project is divided into two parts, each implemented in a separate branch. The first part (kvs_server) focuses on creating a key-value store using a hash table, threads, and forks. The second part (main branch) extends the system to include client-server communication using named pipes building on top of the code in kvs_server.\n\n## Structure of the Project\n\n### Part 1: KeyValueStore system\n\n1. **WRITE:** Write one or more key-value pairs to the store.\n2. **READ:** Read the values of one or more keys from the store.\n3. **DELETE:** Delete one or more key-value pairs from the store.\n4. **SHOW:** Display all key-value pairs in the store.\n5. **WAIT:** Introduce a delay in the execution of commands.\n6. **BACKUP:** Create a backup of the current state of the store.\n\nExample Commands:\n\u003cpre\u003e\nWAIT 1000\nWRITE [(d,dinis)(c,carlota)]\nREAD [x,z,l,v]\nSHOW\nBACKUP\nDELETE [c]\n\u003c/pre\u003e\n    \n ### Part 2: Client-Server Communication\n\n1. **DELAY:** Introduce a delay in the execution of commands.\n2. **SUBSCRIBE:** Subscribe to specific keys to receive notifications.\n3. **UNSUBSCRIBE:** Unsubscribe from specific keys.\n4. **DISCONNECT:** Disconnect the client from the server.\n\nExample Commands:\n\u003cpre\u003e\nDELAY 1000\nSUBSCRIBE [a]\nUNSUBSCRIBE [a]\nDISCONNECT\n\u003c/pre\u003e\n\n## Building and Usage of the project\n\n\n#### Building\nTo build the project, use the provided Makefile (in the src directory):\n\n```shell\nmake\n```\n\n#### Running the Server\nTo run the server, use the following command (in the src/server directory):\n\n```shell\n./server/kvs \u003cjobs_dir\u003e \u003cmax_threads\u003e \u003cbackups_max\u003e \u003cserver_fifo_path\u003e\n```\n\n- `\u003cjobs_dir\u003e`: Directory containing the job files.\n- `\u003cmax_threads\u003e`: Maximum number of threads to process job files.\n- `\u003cbackups_max\u003e`: Maximum number of concurrent backups.\n- `\u003cserver_fifo_path\u003e`: Path to the server registration FIFO.\n\n#### Running Clients\nTo run a client, use the following command (in the src/client directory):\n\n```shell\n./client/client \u003cclient_id\u003e \u003cserver_fifo_path\u003e\n```\n\n- `\u003cclient_id\u003e`: Unique identifier for the client.\n- `\u003cserver_fifo_path\u003e`: Path to the server registration FIFO.\n\n\u003e [!NOTE]\\\n\u003e When running multiple clients use different client id's.\n\n## Credits\nThis project was developed for educational purposes as part of our Operating Systems class. The base code and materials were provided by our teacher, Paolo Romano @ IST.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmigpovrap%2Fkeyvaluestore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmigpovrap%2Fkeyvaluestore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmigpovrap%2Fkeyvaluestore/lists"}