diff options
| author | ckrinitsin <101062646+ckrinitsin@users.noreply.github.com> | 2025-03-21 22:15:01 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-21 22:15:01 +0100 |
| commit | 5fca08baa98058508c743101dcf10cd1b178ec7a (patch) | |
| tree | 9346b38f25ab5880af3f40e49ba1e64c4f7e0ca2 /src/client/main.cpp | |
| parent | 2a22b4123dce661b0500dc07012d61215bdce161 (diff) | |
| parent | 7212db13b9013aa15673ae65da65eeaf97ee0d12 (diff) | |
| download | BT-Programming-Assignment-5fca08baa98058508c743101dcf10cd1b178ec7a.tar.gz BT-Programming-Assignment-5fca08baa98058508c743101dcf10cd1b178ec7a.zip | |
Merge pull request #4 from ckrinitsin/client-input
Client input
Diffstat (limited to 'src/client/main.cpp')
| -rw-r--r-- | src/client/main.cpp | 114 |
1 files changed, 3 insertions, 111 deletions
diff --git a/src/client/main.cpp b/src/client/main.cpp index 6dfd48f..7e61ffe 100644 --- a/src/client/main.cpp +++ b/src/client/main.cpp @@ -1,115 +1,7 @@ -#include "shared_memory.h" -#include <cstring> -#include <fcntl.h> -#include <iostream> -#include <pthread.h> -#include <sys/mman.h> -#include <unistd.h> -#include <utility> - -bool request_processed(SharedMemory* shared_memory, int index) -{ - if (shared_memory->full) { - return false; - } - if (shared_memory->tail == shared_memory->head && !shared_memory->full) { - return true; - } - - for (int i = shared_memory->head - 1; i != shared_memory->tail; i = (i - 1) % QUEUE_SIZE) { - if (i == index) { - return false; - } - } - - return shared_memory->tail != index; -} - -void send_request( - SharedMemory* shared_memory, - Operations type, - std::pair<const std::string&, const std::string&> arguments) -{ - int index; - - pthread_mutex_lock(&shared_memory->mutex); - - if (shared_memory->full) { - std::cout << "Queue is full" << '\n'; - pthread_cond_wait(&shared_memory->cond_var, &shared_memory->mutex); - return; - } - - index = shared_memory->head; - Request* request = &shared_memory->request[index]; - request->type = type; - strncpy(request->key, serialize(arguments.first).c_str(), MAX_KEY_SIZE); - strncpy(request->value, serialize(arguments.second).c_str(), MAX_VALUE_SIZE); - shared_memory->head = (1 + shared_memory->head) % QUEUE_SIZE; - shared_memory->full = shared_memory->head == shared_memory->tail; - pthread_cond_signal(&shared_memory->cond_var); - - pthread_mutex_unlock(&shared_memory->mutex); - - std::cout << "Command sent" << '\n'; - - if (type == Operations::GET) { - pthread_mutex_lock(&shared_memory->mutex); - - while (!request_processed(shared_memory, index)) { - pthread_cond_wait(&shared_memory->cond_var, &shared_memory->mutex); - } - std::string result(shared_memory->request[index].response); - pthread_mutex_unlock(&shared_memory->mutex); - std::cout << "Result: " << result << std::endl; - } -} +#include "client.h" int main() { - int shm_fd = shm_open(SHM_NAME, O_RDWR, 0666); - if (shm_fd == -1) { - std::cout << "Server not running" << '\n'; - return -1; - } - - SharedMemory* shared_memory = - (SharedMemory*)mmap(0, sizeof(SharedMemory), PROT_READ | PROT_WRITE, MAP_SHARED, shm_fd, 0); - - std::cout << "Start inserting.." << '\n'; - send_request(shared_memory, INSERT, std::pair(serialize(3), serialize(3))); - - std::cout << "Start inserting.." << '\n'; - send_request(shared_memory, INSERT, std::pair(serialize(4), serialize(5))); - - std::cout << "Start inserting.." << '\n'; - send_request(shared_memory, INSERT, std::pair(serialize(6), serialize(6))); - - std::cout << "Start inserting.." << '\n'; - send_request(shared_memory, INSERT, std::pair(serialize(7), serialize(3))); - - std::cout << "Start inserting.." << '\n'; - send_request(shared_memory, INSERT, std::pair(serialize(8), serialize(3))); - - std::cout << "Start inserting.." << '\n'; - send_request(shared_memory, INSERT, std::pair(serialize(9), serialize(3))); - - std::cout << "Start inserting.." << '\n'; - send_request(shared_memory, INSERT, std::pair(serialize(10), serialize(3))); - - std::cout << "Start inserting.." << '\n'; - send_request(shared_memory, INSERT, std::pair(serialize(11), serialize(3))); - - std::cout << "Start inserting.." << '\n'; - send_request(shared_memory, INSERT, std::pair(serialize(12), serialize(3))); - - std::cout << "Start inserting.." << '\n'; - send_request(shared_memory, INSERT, std::pair(serialize(13), serialize(4))); - - std::cout << "Start PRINTING.." << '\n'; - send_request(shared_memory, PRINT, std::pair(serialize(0), serialize(0))); - - munmap(shared_memory, sizeof(SharedMemory)); - close(shm_fd); - return 0; + Client client; + client.start_client(); } |