8
8
9
9
10
10
namespace STIP {
11
- // / \brief Connection конструктор
12
- // /
13
- // / Конструктор класса Connection
14
- // / Создает объект Connection
15
- // /
16
- // / \param endpoint - адрес и порт подключения
17
- // / \param socket
11
+
18
12
Connection::Connection (udp::endpoint &endpoint, udp::socket *socket) {
19
13
this ->endpoint = endpoint;
20
14
this ->socket = socket;
21
15
this ->connectionStatus = 100 ;
22
16
this ->sessionManager = new SessionManager ();
23
17
}
24
18
25
- // / \brief Добавление пакета в очередь обработки
26
- // /
27
- // / Добавляет пакет в очередь для данного соединения
28
- // / После добавления пакета в очередь, уведомляет поток обработки пакетов
29
- // /
30
- // / \param packet
19
+
31
20
void Connection::addPacket (const STIP_PACKET &packet) {
32
21
std::lock_guard<std::mutex> lock (mtx);
33
22
packetQueue.push (packet);
@@ -36,14 +25,7 @@ namespace STIP {
36
25
std::cout << " Packet added to queue" << std::endl;
37
26
}
38
27
39
- // / \brief Получение пакета из очереди
40
- // /
41
- // / Получает пакет из очереди
42
- // / Если очередь пуста, ждет пока не появится пакет
43
- // / Возвращает пакет и результат выполнения
44
- // /
45
- // / \param result
46
- // / \return packet
28
+
47
29
STIP_PACKET Connection::getPacket (bool &result) {
48
30
std::unique_lock<std::mutex> lock (mtx);
49
31
cv.wait (lock, [this ] { return !packetQueue.empty (); }); // TODO условие дописать для stop_processing
@@ -57,12 +39,7 @@ namespace STIP {
57
39
return packet;
58
40
}
59
41
60
- // / \brief Connection деструктор
61
- // /
62
- // / Деструктор класса Connection
63
- // / Останавливает поток обработки пакетов
64
- // / Удаляет объект SessionManager
65
- // /
42
+
66
43
Connection::~Connection () {
67
44
// remove connection from manager
68
45
@@ -78,24 +55,12 @@ namespace STIP {
78
55
79
56
}
80
57
81
- // / \brief Установка статуса соединения
82
- // /
83
- // / Устанавливает статус соединения
84
- // /
85
- // / \param status - статус соединения
58
+
86
59
void Connection::setConnectionStatus (char status) {
87
60
connectionStatus = status;
88
61
}
89
62
90
- // / \brief Отправка пинга(получение версии протокола)
91
- // /
92
- // / Создает сессию отправки и обработки пинга PingSession
93
- // / Добавляет объект PingSession в SessionManager
94
- // / Отправляет пинг
95
- // / Ждет ответ
96
- // / Удаляет объект PingSession из SessionManager
97
- // /
98
- // / \return result - версия протокола
63
+
99
64
uint32_t Connection::pingVersion () {
100
65
uint32_t session_id = sessionManager->generateSessionId ();
101
66
auto *session = new PingSession (session_id);
@@ -118,17 +83,7 @@ namespace STIP {
118
83
// TODO: Add timeout and error handling
119
84
}
120
85
121
- // / \brief Отправка сообщения
122
- // /
123
- // / Создает сессию отправки сообщения SendMessageSession
124
- // / Добавляет объект SendMessageSession в SessionManager
125
- // / Отправляет сообщение
126
- // / Ждет подтверждения
127
- // / Удаляет объект SendMessageSession из SessionManager
128
- // /
129
- // / \param data - указатель на данные
130
- // / \param size - размер данных в байтах
131
- // / \return result
86
+
132
87
bool Connection::sendMessage (void *data, size_t size) {
133
88
uint32_t session_id = sessionManager->generateSessionId ();
134
89
auto *session = new SendMessageSession (session_id, data, size, socket, endpoint);
@@ -144,6 +99,7 @@ namespace STIP {
144
99
return result;
145
100
}
146
101
102
+
147
103
bool Connection::sendMessage (const std::string &message) {
148
104
return sendMessage ((void *) message.c_str (), message.size ());
149
105
}
0 commit comments