My Project
Loading...
Searching...
No Matches
ServerSocket.hpp
1#pragma once
2
3#include "message/MessageFrame.hpp"
4#include <string>
5#include <thread>
6#include <mutex>
7#include <atomic>
8#include <condition_variable>
9#include <queue>
10#include <iostream>
11#include <optional>
12#include <sys/socket.h>
13#include <netinet/in.h>
14#include <arpa/inet.h>
15#include <unistd.h>
16#include <cstring>
17
19private:
20 void receiveMessages();
21 void sendMessages();
22
23 int serverSocket;
24 int clientSocket;
25
26 std::thread receiveThread;
27 std::thread sendThread;
28
29 std::atomic<bool> connected;
30 std::mutex connectionMutex;
31 std::condition_variable connectionCondition;
32
33 std::atomic<bool> running;
34
35 std::queue<MessageFrame> sendQueue;
36 std::mutex sendMutex;
37 std::condition_variable sendCondition;
38
39 std::queue<MessageFrame> receiveQueue;
40 std::mutex receiveMutex;
41 std::condition_variable receiveCondition;
42
43 std::function<void()> onConnectedCallback;
44 std::function<void()> onDisconnectedCallback;
45
46public:
47 ServerSocket(int port);
49
50 bool accept();
51 bool disconnect();
52 bool isConnected() const;
53 bool sendMessage(const MessageFrame& message);
54
55 std::mutex& getReceiveMutex();
56 std::condition_variable& getReceiveCondition();
57 std::queue<MessageFrame>& getReceiveQueue();
58
59 void setOnConnectedCallback(std::function<void()> callback);
60 void setOnDisconnectedCallback(std::function<void()> callback);
61
62};
Definition ServerSocket.hpp:18
Definition MessageFrame.hpp:34