Skip to content

Commit 120133c

Browse files
committed
Отладка стабильности обмена сообщениями между клиентом и сервером
1 parent 05eb4b8 commit 120133c

2 files changed

Lines changed: 23 additions & 132 deletions

File tree

src/core/client.cpp

Lines changed: 19 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,25 @@ void awh::client::Core::connect(const uint16_t sid) noexcept {
155155
if((broker->addr.fd != INVALID_SOCKET) && (broker->addr.fd < AWH_MAX_SOCKETS)){
156156
// Выполняем установку желаемого протокола подключения
157157
broker->ectx.proto(this->_settings.proto);
158-
// Переводим сокет в неблокирующий режим
159-
broker->ectx.blocking(engine_t::mode_t::DISABLED);
158+
// Определяем тип сокета
159+
switch(static_cast <uint8_t> (this->_settings.sonet)){
160+
// Если тип сокета установлен как TCP/IP
161+
case static_cast <uint8_t> (scheme_t::sonet_t::TCP):
162+
// Если тип сокета установлен как TCP/IP TLS
163+
case static_cast <uint8_t> (scheme_t::sonet_t::TLS):
164+
// Если тип сокета установлен как SCTP
165+
case static_cast <uint8_t> (scheme_t::sonet_t::SCTP):
166+
// Переводим сокет в неблокирующий режим
167+
broker->ectx.blocking(engine_t::mode_t::DISABLED);
168+
break;
169+
// Если тип сокета установлен как UDP
170+
case static_cast <uint8_t> (scheme_t::sonet_t::UDP):
171+
// Если тип сокета установлен как DTLS
172+
case static_cast <uint8_t> (scheme_t::sonet_t::DTLS):
173+
// Переводим сокет в блокирующий режим
174+
broker->ectx.blocking(engine_t::mode_t::ENABLED);
175+
break;
176+
}
160177
// Если подключение выполняется по защищённому каналу DTLS
161178
if(this->_settings.sonet == scheme_t::sonet_t::DTLS)
162179
// Выполняем получение контекста сертификата
@@ -1416,25 +1433,6 @@ void awh::client::Core::read(const uint64_t bid) noexcept {
14161433
if((shm->receiving = (shm->status.real == scheme_t::mode_t::CONNECT))){
14171434
// Выполняем отключение приёма данных на этот сокет
14181435
broker->events(awh::scheme_t::mode_t::DISABLED, engine_t::method_t::READ);
1419-
// Определяем тип сокета
1420-
switch(static_cast <uint8_t> (this->_settings.sonet)){
1421-
// Если тип сокета установлен как TCP/IP
1422-
case static_cast <uint8_t> (scheme_t::sonet_t::TCP):
1423-
// Если тип сокета установлен как TCP/IP TLS
1424-
case static_cast <uint8_t> (scheme_t::sonet_t::TLS):
1425-
// Если тип сокета установлен как SCTP
1426-
case static_cast <uint8_t> (scheme_t::sonet_t::SCTP):
1427-
// Переводим сокет в неблокирующий режим
1428-
broker->ectx.blocking(engine_t::mode_t::DISABLED);
1429-
break;
1430-
// Если тип сокета установлен как UDP
1431-
case static_cast <uint8_t> (scheme_t::sonet_t::UDP):
1432-
// Если тип сокета установлен как DTLS
1433-
case static_cast <uint8_t> (scheme_t::sonet_t::DTLS):
1434-
// Переводим сокет в блокирующий режим
1435-
broker->ectx.blocking(engine_t::mode_t::ENABLED);
1436-
break;
1437-
}
14381436
/**
14391437
* Выполняем чтение данных с сокета
14401438
*/
@@ -1474,16 +1472,6 @@ void awh::client::Core::read(const uint64_t bid) noexcept {
14741472
} while(this->has(bid));
14751473
// Если подключение ещё не разорванно
14761474
if(this->has(bid)){
1477-
// Определяем тип сокета
1478-
switch(static_cast <uint8_t> (this->_settings.sonet)){
1479-
// Если тип сокета установлен как UDP
1480-
case static_cast <uint8_t> (scheme_t::sonet_t::UDP):
1481-
// Если тип сокета установлен как DTLS
1482-
case static_cast <uint8_t> (scheme_t::sonet_t::DTLS):
1483-
// Переводим сокет в неблокирующий режим
1484-
broker->ectx.blocking(engine_t::mode_t::DISABLED);
1485-
break;
1486-
}
14871475
// Если время ожиданий входящих сообщений установлено
14881476
if(broker->timeouts.wait > 0)
14891477
// Выполняем создание таймаута ожидания получения данных
@@ -1624,29 +1612,12 @@ size_t awh::client::Core::write(const char * buffer, const size_t size, const ui
16241612
case static_cast <uint8_t> (transfer_t::SYNC): {
16251613
// Определяем тип сокета
16261614
switch(static_cast <uint8_t> (this->_settings.sonet)){
1627-
// Если тип сокета установлен как UDP
1628-
case static_cast <uint8_t> (scheme_t::sonet_t::UDP):
16291615
// Если тип сокета установлен как TCP/IP
16301616
case static_cast <uint8_t> (scheme_t::sonet_t::TCP):
16311617
// Если тип сокета установлен как TCP/IP TLS
16321618
case static_cast <uint8_t> (scheme_t::sonet_t::TLS):
16331619
// Если тип сокета установлен как SCTP
16341620
case static_cast <uint8_t> (scheme_t::sonet_t::SCTP):
1635-
// Если тип сокета установлен как DTLS
1636-
case static_cast <uint8_t> (scheme_t::sonet_t::DTLS):
1637-
// Переводим сокет в блокирующий режим
1638-
broker->ectx.blocking(engine_t::mode_t::ENABLED);
1639-
break;
1640-
}
1641-
} break;
1642-
// Если передавать данные необходимо асинхронно
1643-
case static_cast <uint8_t> (transfer_t::ASYNC): {
1644-
// Определяем тип сокета
1645-
switch(static_cast <uint8_t> (this->_settings.sonet)){
1646-
// Если тип сокета установлен как UDP
1647-
case static_cast <uint8_t> (scheme_t::sonet_t::UDP):
1648-
// Если тип сокета установлен как DTLS
1649-
case static_cast <uint8_t> (scheme_t::sonet_t::DTLS):
16501621
// Переводим сокет в блокирующий режим
16511622
broker->ectx.blocking(engine_t::mode_t::ENABLED);
16521623
break;
@@ -1691,29 +1662,12 @@ size_t awh::client::Core::write(const char * buffer, const size_t size, const ui
16911662
case static_cast <uint8_t> (transfer_t::SYNC): {
16921663
// Определяем тип сокета
16931664
switch(static_cast <uint8_t> (this->_settings.sonet)){
1694-
// Если тип сокета установлен как UDP
1695-
case static_cast <uint8_t> (scheme_t::sonet_t::UDP):
16961665
// Если тип сокета установлен как TCP/IP
16971666
case static_cast <uint8_t> (scheme_t::sonet_t::TCP):
16981667
// Если тип сокета установлен как TCP/IP TLS
16991668
case static_cast <uint8_t> (scheme_t::sonet_t::TLS):
17001669
// Если тип сокета установлен как SCTP
17011670
case static_cast <uint8_t> (scheme_t::sonet_t::SCTP):
1702-
// Если тип сокета установлен как DTLS
1703-
case static_cast <uint8_t> (scheme_t::sonet_t::DTLS):
1704-
// Переводим сокет в неблокирующий режим
1705-
broker->ectx.blocking(engine_t::mode_t::DISABLED);
1706-
break;
1707-
}
1708-
} break;
1709-
// Если передавать данные необходимо асинхронно
1710-
case static_cast <uint8_t> (transfer_t::ASYNC): {
1711-
// Определяем тип сокета
1712-
switch(static_cast <uint8_t> (this->_settings.sonet)){
1713-
// Если тип сокета установлен как UDP
1714-
case static_cast <uint8_t> (scheme_t::sonet_t::UDP):
1715-
// Если тип сокета установлен как DTLS
1716-
case static_cast <uint8_t> (scheme_t::sonet_t::DTLS):
17171671
// Переводим сокет в неблокирующий режим
17181672
broker->ectx.blocking(engine_t::mode_t::DISABLED);
17191673
break;

src/core/server.cpp

Lines changed: 4 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ void awh::server::Core::accept(const SOCKET fd, const uint16_t sid) noexcept {
140140
node_t::_brokers.emplace(ret.first->first, ret.first->second.get());
141141
// Выполняем блокировку потока
142142
this->_mtx.accept.unlock();
143-
// Переводим сокет в неблокирующий режим
144-
ret.first->second->ectx.blocking(engine_t::mode_t::DISABLED);
143+
// Переводим сокет в блокирующий режим
144+
ret.first->second->ectx.blocking(engine_t::mode_t::ENABLED);
145145
// Выполняем установку функции обратного вызова на получении сообщений
146146
ret.first->second->on <void (const uint64_t)> ("read", &core_t::read, this, _1);
147147
// Выполняем установку функции обратного вызова на получение сигнала закрытия подключения
@@ -814,8 +814,8 @@ void awh::server::Core::accept(const uint16_t sid, const uint64_t bid) noexcept
814814
// Выходим
815815
return;
816816
}
817-
// Переводим сокет в неблокирующий режим
818-
broker->ectx.blocking(engine_t::mode_t::DISABLED);
817+
// Переводим сокет в блокирующий режим
818+
broker->ectx.blocking(engine_t::mode_t::ENABLED);
819819
// Если вывод информационных данных не запрещён
820820
if(this->_info){
821821
// Если порт установлен
@@ -2383,25 +2383,6 @@ void awh::server::Core::read(const uint64_t bid) noexcept {
23832383
if(i != this->_schemes.end()){
23842384
// Выполняем отключение приёма данных на этот сокет
23852385
broker->events(awh::scheme_t::mode_t::DISABLED, engine_t::method_t::READ);
2386-
// Определяем тип сокета
2387-
switch(static_cast <uint8_t> (this->_settings.sonet)){
2388-
// Если тип сокета установлен как TCP/IP
2389-
case static_cast <uint8_t> (scheme_t::sonet_t::TCP):
2390-
// Если тип сокета установлен как TCP/IP TLS
2391-
case static_cast <uint8_t> (scheme_t::sonet_t::TLS):
2392-
// Если тип сокета установлен как SCTP
2393-
case static_cast <uint8_t> (scheme_t::sonet_t::SCTP):
2394-
// Переводим сокет в неблокирующий режим
2395-
broker->ectx.blocking(engine_t::mode_t::DISABLED);
2396-
break;
2397-
// Если тип сокета установлен как UDP
2398-
case static_cast <uint8_t> (scheme_t::sonet_t::UDP):
2399-
// Если тип сокета установлен как DTLS
2400-
case static_cast <uint8_t> (scheme_t::sonet_t::DTLS):
2401-
// Переводим сокет в блокирующий режим
2402-
broker->ectx.blocking(engine_t::mode_t::ENABLED);
2403-
break;
2404-
}
24052386
/**
24062387
* Выполняем чтение данных с сокета
24072388
*/
@@ -2455,16 +2436,6 @@ void awh::server::Core::read(const uint64_t bid) noexcept {
24552436
} while(this->has(bid));
24562437
// Если подключение ещё не разорванно
24572438
if(this->has(bid)){
2458-
// Определяем тип сокета
2459-
switch(static_cast <uint8_t> (this->_settings.sonet)){
2460-
// Если тип сокета установлен как UDP
2461-
case static_cast <uint8_t> (scheme_t::sonet_t::UDP):
2462-
// Если тип сокета установлен как DTLS
2463-
case static_cast <uint8_t> (scheme_t::sonet_t::DTLS):
2464-
// Переводим сокет в неблокирующий режим
2465-
broker->ectx.blocking(engine_t::mode_t::DISABLED);
2466-
break;
2467-
}
24682439
// Если время ожиданий входящих сообщений установлено
24692440
if((broker->timeouts.wait > 0) && (this->_settings.sonet != scheme_t::sonet_t::DTLS))
24702441
// Выполняем создание таймаута ожидания получения данных
@@ -2560,29 +2531,12 @@ size_t awh::server::Core::write(const char * buffer, const size_t size, const ui
25602531
case static_cast <uint8_t> (transfer_t::SYNC): {
25612532
// Определяем тип сокета
25622533
switch(static_cast <uint8_t> (this->_settings.sonet)){
2563-
// Если тип сокета установлен как UDP
2564-
case static_cast <uint8_t> (scheme_t::sonet_t::UDP):
25652534
// Если тип сокета установлен как TCP/IP
25662535
case static_cast <uint8_t> (scheme_t::sonet_t::TCP):
25672536
// Если тип сокета установлен как TCP/IP TLS
25682537
case static_cast <uint8_t> (scheme_t::sonet_t::TLS):
25692538
// Если тип сокета установлен как SCTP
25702539
case static_cast <uint8_t> (scheme_t::sonet_t::SCTP):
2571-
// Если тип сокета установлен как DTLS
2572-
case static_cast <uint8_t> (scheme_t::sonet_t::DTLS):
2573-
// Переводим сокет в блокирующий режим
2574-
broker->ectx.blocking(engine_t::mode_t::ENABLED);
2575-
break;
2576-
}
2577-
} break;
2578-
// Если передавать данные необходимо асинхронно
2579-
case static_cast <uint8_t> (transfer_t::ASYNC): {
2580-
// Определяем тип сокета
2581-
switch(static_cast <uint8_t> (this->_settings.sonet)){
2582-
// Если тип сокета установлен как UDP
2583-
case static_cast <uint8_t> (scheme_t::sonet_t::UDP):
2584-
// Если тип сокета установлен как DTLS
2585-
case static_cast <uint8_t> (scheme_t::sonet_t::DTLS):
25862540
// Переводим сокет в блокирующий режим
25872541
broker->ectx.blocking(engine_t::mode_t::ENABLED);
25882542
break;
@@ -2621,29 +2575,12 @@ size_t awh::server::Core::write(const char * buffer, const size_t size, const ui
26212575
case static_cast <uint8_t> (transfer_t::SYNC): {
26222576
// Определяем тип сокета
26232577
switch(static_cast <uint8_t> (this->_settings.sonet)){
2624-
// Если тип сокета установлен как UDP
2625-
case static_cast <uint8_t> (scheme_t::sonet_t::UDP):
26262578
// Если тип сокета установлен как TCP/IP
26272579
case static_cast <uint8_t> (scheme_t::sonet_t::TCP):
26282580
// Если тип сокета установлен как TCP/IP TLS
26292581
case static_cast <uint8_t> (scheme_t::sonet_t::TLS):
26302582
// Если тип сокета установлен как SCTP
26312583
case static_cast <uint8_t> (scheme_t::sonet_t::SCTP):
2632-
// Если тип сокета установлен как DTLS
2633-
case static_cast <uint8_t> (scheme_t::sonet_t::DTLS):
2634-
// Переводим сокет в неблокирующий режим
2635-
broker->ectx.blocking(engine_t::mode_t::DISABLED);
2636-
break;
2637-
}
2638-
} break;
2639-
// Если передавать данные необходимо асинхронно
2640-
case static_cast <uint8_t> (transfer_t::ASYNC): {
2641-
// Определяем тип сокета
2642-
switch(static_cast <uint8_t> (this->_settings.sonet)){
2643-
// Если тип сокета установлен как UDP
2644-
case static_cast <uint8_t> (scheme_t::sonet_t::UDP):
2645-
// Если тип сокета установлен как DTLS
2646-
case static_cast <uint8_t> (scheme_t::sonet_t::DTLS):
26472584
// Переводим сокет в неблокирующий режим
26482585
broker->ectx.blocking(engine_t::mode_t::DISABLED);
26492586
break;

0 commit comments

Comments
 (0)