about summary refs log tree commit diff stats
path: root/src/server/shared_memory_server.h
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-03-23 20:34:26 +0100
committerChristian Krinitsin <mail@krinitsin.com>2025-03-23 20:34:26 +0100
commit876b2f8e699c1b24ae5e4f98a4affe9fa1a8650f (patch)
treee43eace54529dbc83994bc1404dd51ed08a25c42 /src/server/shared_memory_server.h
parent36dabafe242e8dc290ff76885c43c773b6d20b28 (diff)
downloadBT-Programming-Assignment-876b2f8e699c1b24ae5e4f98a4affe9fa1a8650f.tar.gz
BT-Programming-Assignment-876b2f8e699c1b24ae5e4f98a4affe9fa1a8650f.zip
add a request status, so that multiple clients cannot overwrite requests from other clients
Diffstat (limited to '')
-rw-r--r--src/server/shared_memory_server.h5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/server/shared_memory_server.h b/src/server/shared_memory_server.h
index d4be69f..e8e5c38 100644
--- a/src/server/shared_memory_server.h
+++ b/src/server/shared_memory_server.h
@@ -34,7 +34,6 @@ public:
             mmap(0, sizeof(SharedMemory), PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0);
 
         shared_memory->tail = shared_memory->head = 0;
-        shared_memory->full = false;
 
         pthread_mutexattr_t mutex_attr;
         pthread_condattr_t cond_attr;
@@ -74,7 +73,7 @@ public:
         while (true) {
             pthread_mutex_lock(&shared_memory->mutex);
 
-            if (shared_memory->tail == shared_memory->head && !shared_memory->full) {
+            if (shared_memory->request[shared_memory->head].status != SENT) {
                 pthread_cond_wait(&shared_memory->cond_var, &shared_memory->mutex);
             }
 
@@ -140,8 +139,8 @@ public:
             default:
                 break;
             }
+            shared_memory->request[shared_memory->head].status = PROCESSED;
             shared_memory->head = (1 + shared_memory->head) % QUEUE_SIZE;
-            shared_memory->full = false;
             pthread_cond_signal(&shared_memory->cond_var);
             pthread_mutex_unlock(&shared_memory->mutex);
         }