Skip to content

Commit f25405c

Browse files
committed
Отладка стабильности работы
1 parent 1691478 commit f25405c

File tree

5 files changed

+22
-20
lines changed

5 files changed

+22
-20
lines changed

include/lib.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*/
99

1010
// Версия приложения
11-
#define AWH_VERSION "1.1.1"
11+
#define AWH_VERSION "1.1.2"
1212
// Короткое название библиотеки
1313
#define AWH_SHORT_NAME "AWH"
1414
// Название библиотеки
@@ -50,7 +50,7 @@
5050
// Интервал времени для получения данных с сервера в секундах
5151
#define READ_TIMEOUT 30
5252
// Интервал времени для записи данных на сервере в секундах
53-
#define WRITE_TIMEOUT 30
53+
#define WRITE_TIMEOUT 0
5454
// Интервал времени на проверку подключения с сервером в милисекундах
5555
#define PING_INTERVAL 120000
5656
// Интервал времени на получение сообщений с сервера в милисекундах

sample/ws.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ int main(int argc, char * argv[]) noexcept {
110110
// Если данные пришли в виде текста, выводим
111111
if(utf8){
112112
// Создаём объект JSON
113-
json data = json::parse(string(buffer.begin(), buffer.end()));
113+
json data = json::parse(buffer.begin(), buffer.end());
114114
// Выводим полученный результат
115115
cout << " +++++++++++++ " << data.dump(4) << endl;
116116
// Сообщаем количество полученных байт

src/client/core.cpp

+19-9
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,19 @@ void awh::CoreClient::event(struct bufferevent * bev, const short events, void *
120120
if(wrk->connectProxyFn != nullptr) wrk->connectProxyFn(adj->aid, const_cast <core_t *> (wrk->core), wrk->ctx);
121121
// Выполняем функцию обратного вызова
122122
} else if(wrk->connectFn != nullptr) wrk->connectFn(adj->aid, const_cast <core_t *> (wrk->core), wrk->ctx);
123+
// Если флаг ожидания входящих сообщений, активирован
124+
if(wrk->wait){
125+
// Устанавливаем таймаут ожидания поступления данных
126+
struct timeval read = {adj->timeRead, 0};
127+
// Устанавливаем таймаут ожидания записи данных
128+
struct timeval write = {adj->timeWrite, 0};
129+
// Устанавливаем таймаут на отправку/получение данных
130+
bufferevent_set_timeouts(
131+
adj->bev,
132+
(adj->timeRead > 0 ? &read : nullptr),
133+
(adj->timeWrite > 0 ? &write : nullptr)
134+
);
135+
}
123136
// Если это ошибка или завершение работы
124137
} else if(events & (BEV_EVENT_ERROR | BEV_EVENT_EOF | BEV_EVENT_TIMEOUT)) {
125138
// Если это ошибка
@@ -128,6 +141,8 @@ void awh::CoreClient::event(struct bufferevent * bev, const short events, void *
128141
adj->log->print("closing server [%s:%d] %s", log_t::flag_t::WARNING, host.c_str(), url.port, evutil_socket_error_to_string(EVUTIL_SOCKET_ERROR()));
129142
// Если - это таймаут, выводим сообщение в лог
130143
else if(events & BEV_EVENT_TIMEOUT) adj->log->print("timeout server [%s:%d]", log_t::flag_t::WARNING, host.c_str(), url.port);
144+
// Запрещаем чтение запись данных серверу
145+
bufferevent_disable(bev, EV_WRITE | EV_READ);
131146
// Выполняем отключение от сервера
132147
const_cast <core_t *> (wrk->core)->close(adj->aid);
133148
}
@@ -279,15 +294,6 @@ void awh::CoreClient::tuning(const size_t aid) noexcept {
279294
bufferevent_setcb(it->second->bev, &read, &write, &event, (void *) it->second);
280295
// Очищаем буферы событий при завершении работы
281296
bufferevent_flush(it->second->bev, EV_READ | EV_WRITE, BEV_FINISHED);
282-
// Если флаг ожидания входящих сообщений, активирован
283-
if(wrk->wait){
284-
// Устанавливаем таймаут ожидания поступления данных
285-
struct timeval read = {it->second->timeRead, 0};
286-
// Устанавливаем таймаут ожидания записи данных
287-
struct timeval write = {it->second->timeWrite, 0};
288-
// Устанавливаем таймаут получения данных
289-
bufferevent_set_timeouts(it->second->bev, &read, &write);
290-
}
291297
/**
292298
* Водяной знак на N байт (чтобы считывать данные когда они действительно приходят)
293299
*/
@@ -401,6 +407,10 @@ void awh::CoreClient::close(const size_t aid) noexcept {
401407
// Устанавливаем что событие удалено
402408
const_cast <worker_t::adj_t *> (it->second)->bev = nullptr;
403409
}
410+
// Если прокси-сервер активирован но уже переключён на работу с сервером
411+
if((wrk->proxy.type != proxy_t::type_t::NONE) && !wrk->isProxy())
412+
// Выполняем переключение обратно на прокси-сервер
413+
wrk->switchConnect();
404414
// Выполняем удаление контекста SSL
405415
this->ssl->clear(wrk->ssl);
406416
// Удаляем адъютанта из списка адъютантов

src/client/rest.cpp

-4
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,6 @@ void awh::Rest::closeCallback(const size_t wid, core_t * core, void * ctx) noexc
4343
// Если нужно произвести запрос заново
4444
if((web->res.code == 301) || (web->res.code == 308) ||
4545
(web->res.code == 401) || (web->res.code == 407)){
46-
// Если прокси-сервер активирован но уже переключён на работу с сервером
47-
if((web->worker.proxy.type != proxy_t::type_t::NONE) && !web->worker.isProxy())
48-
// Выполняем переключение обратно на прокси-сервер
49-
web->worker.switchConnect();
5046
// Выполняем запрос заново
5147
core->open(web->worker.wid);
5248
// Выходим из функции

src/client/ws.cpp

-4
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,6 @@ void awh::WebSocketClient::closeCallback(const size_t wid, core_t * core, void *
4949
// Если нужно произвести запрос заново
5050
if((ws->code == 301) || (ws->code == 308) ||
5151
(ws->code == 401) || (ws->code == 407)){
52-
// Если прокси-сервер активирован но уже переключён на работу с сервером
53-
if((ws->worker.proxy.type != proxy_t::type_t::NONE) && !ws->worker.isProxy())
54-
// Выполняем переключение обратно на прокси-сервер
55-
ws->worker.switchConnect();
5652
// Выполняем запрос заново
5753
core->open(ws->worker.wid);
5854
// Выходим из функции

0 commit comments

Comments
 (0)