about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/client.cpp8
-rw-r--r--src/server/main.cpp2
-rw-r--r--src/server/shared_memory_server.h5
3 files changed, 8 insertions, 7 deletions
diff --git a/src/client/client.cpp b/src/client/client.cpp
index cbaddeb..e7853a8 100644
--- a/src/client/client.cpp
+++ b/src/client/client.cpp
@@ -98,13 +98,13 @@ bool Client::request_processed(SharedMemory* shared_memory, int index)
         return true;
     }
 
-    for (int i = shared_memory->head - 1; i != shared_memory->tail; i = (i - 1) % QUEUE_SIZE) {
+    for (int i = shared_memory->head; i != shared_memory->tail; i = (i + 1) % QUEUE_SIZE) {
         if (i == index) {
             return false;
         }
     }
 
-    return shared_memory->tail != index;
+    return true;
 }
 
 int Client::send_request(
@@ -121,12 +121,12 @@ int Client::send_request(
         pthread_cond_wait(&shared_memory->cond_var, &shared_memory->mutex);
     }
 
-    index = shared_memory->head;
+    index = shared_memory->tail;
     Request* request = &shared_memory->request[index];
     request->type = type;
     strncpy(request->key, k.value_or("null").c_str(), MAX_KEY_SIZE);
     strncpy(request->value, v.value_or("null").c_str(), MAX_VALUE_SIZE);
-    shared_memory->head = (1 + shared_memory->head) % QUEUE_SIZE;
+    shared_memory->tail = (1 + shared_memory->tail) % QUEUE_SIZE;
     shared_memory->full = shared_memory->head == shared_memory->tail;
     pthread_cond_signal(&shared_memory->cond_var);
 
diff --git a/src/server/main.cpp b/src/server/main.cpp
index d724bd5..75939e0 100644
--- a/src/server/main.cpp
+++ b/src/server/main.cpp
@@ -8,7 +8,7 @@
 int main(int argc, char* argv[])
 {
     if (argc != 2) {
-        std::cout << "One argument required" << '\n';
+        std::cout << "Usage: " << argv[0] << " <number-of-buckets>\n";
         return 1;
     }
 
diff --git a/src/server/shared_memory_server.h b/src/server/shared_memory_server.h
index 6c97e64..3ac375a 100644
--- a/src/server/shared_memory_server.h
+++ b/src/server/shared_memory_server.h
@@ -32,6 +32,7 @@ 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;
@@ -68,7 +69,7 @@ public:
                 pthread_cond_wait(&shared_memory->cond_var, &shared_memory->mutex);
             }
 
-            Request* request = &shared_memory->request[shared_memory->tail];
+            Request* request = &shared_memory->request[shared_memory->head];
 
             K key = deserialize<K>(request->key);
             V value = deserialize<V>(request->value);
@@ -130,7 +131,7 @@ public:
             default:
                 break;
             }
-            shared_memory->tail = (1 + shared_memory->tail) % QUEUE_SIZE;
+            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);