Commit 4269d228 authored by Pavel Vainerman's avatar Pavel Vainerman

(LogDB): доделал настройки для websockets

parent 6dff7fc9
...@@ -213,6 +213,10 @@ LogDB::LogDB( const string& name, int argc, const char* const* argv, const strin ...@@ -213,6 +213,10 @@ LogDB::LogDB( const string& name, int argc, const char* const* argv, const strin
} }
#ifndef DISABLE_REST_API #ifndef DISABLE_REST_API
wsHeartbeatTime_sec = (float)uniset::getArgPInt("--" + prefix + "ws-heartbeat-time", argc, argv, it.getProp("wsPingTime"),wsHeartbeatTime_sec) / 1000.0;
wsSendTime_sec = (float)uniset::getArgPInt("--" + prefix + "ws-send-time", argc, argv, it.getProp("wsSendTime"),wsSendTime_sec) / 1000.0;
wsMaxSend = uniset::getArgPInt("--" + prefix + "ws-max-send", argc, argv, it.getProp("wsMaxSend"),wsMaxSend);
httpHost = uniset::getArgParam("--" + prefix + "httpserver-host", argc, argv, "localhost"); httpHost = uniset::getArgParam("--" + prefix + "httpserver-host", argc, argv, "localhost");
httpPort = uniset::getArgInt("--" + prefix + "httpserver-port", argc, argv, "8080"); httpPort = uniset::getArgInt("--" + prefix + "httpserver-port", argc, argv, "8080");
dblog1 << myname << "(init): http server parameters " << httpHost << ":" << httpPort << endl; dblog1 << myname << "(init): http server parameters " << httpHost << ":" << httpPort << endl;
...@@ -220,7 +224,6 @@ LogDB::LogDB( const string& name, int argc, const char* const* argv, const strin ...@@ -220,7 +224,6 @@ LogDB::LogDB( const string& name, int argc, const char* const* argv, const strin
try try
{ {
/*! \FIXME: доделать конфигурирование параметров */
Poco::Net::HTTPServerParams* httpParams = new Poco::Net::HTTPServerParams; Poco::Net::HTTPServerParams* httpParams = new Poco::Net::HTTPServerParams;
int maxQ = uniset::getArgPInt("--" + prefix + "httpserver-max-queued", argc, argv, it.getProp("httpMaxQueued"), 100); int maxQ = uniset::getArgPInt("--" + prefix + "httpserver-max-queued", argc, argv, it.getProp("httpMaxQueued"), 100);
...@@ -432,6 +435,9 @@ void LogDB::help_print() ...@@ -432,6 +435,9 @@ void LogDB::help_print()
cout << "websockets: " << endl; cout << "websockets: " << endl;
cout << "--prefix-ws-max num - Максимальное количество websocket-ов" << endl; cout << "--prefix-ws-max num - Максимальное количество websocket-ов" << endl;
cout << "--prefix-ws-heartbeat-time msec - Период сердцебиения в соединении. По умолчанию: 3000 мсек" << endl;
cout << "--prefix-ws-send-time msec - Период посылки сообщений. По умолчанию: 500 мсек" << endl;
cout << "--prefix-ws-max num - Максимальное число сообщений посылаемых за один раз. По умолчанию: 200" << endl;
cout << "logservers: " << endl; cout << "logservers: " << endl;
cout << "--prefix-ls-check-connection-sec sec - Период проверки соединения с логсервером" << endl; cout << "--prefix-ls-check-connection-sec sec - Период проверки соединения с логсервером" << endl;
...@@ -1229,6 +1235,9 @@ std::shared_ptr<LogDB::LogWebSocket> LogDB::newWebSocket( Poco::Net::HTTPServerR ...@@ -1229,6 +1235,9 @@ std::shared_ptr<LogDB::LogWebSocket> LogDB::newWebSocket( Poco::Net::HTTPServerR
{ {
uniset_rwmutex_wrlock lock(wsocksMutex); uniset_rwmutex_wrlock lock(wsocksMutex);
ws = make_shared<LogWebSocket>(req, resp, log); ws = make_shared<LogWebSocket>(req, resp, log);
ws->setHearbeatTime(wsHeartbeatTime_sec);
ws->setSendPeriod(wsSendTime_sec);
ws->setMaxSendCount(wsMaxSend);
ws->dblog = dblog; ws->dblog = dblog;
wsocks.emplace_back(ws); wsocks.emplace_back(ws);
} }
...@@ -1473,6 +1482,24 @@ void LogDB::LogWebSocket::waitCompletion() ...@@ -1473,6 +1482,24 @@ void LogDB::LogWebSocket::waitCompletion()
finish.wait(lk); finish.wait(lk);
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void LogDB::LogWebSocket::setHearbeatTime( const double& sec )
{
if( sec > 0 )
ping_sec = sec;
}
// -----------------------------------------------------------------------------
void LogDB::LogWebSocket::setSendPeriod ( const double& sec )
{
if( sec > 0 )
send_sec = sec;
}
// -----------------------------------------------------------------------------
void LogDB::LogWebSocket::setMaxSendCount( size_t val )
{
if( val > 0 )
maxsend = val;
}
// -----------------------------------------------------------------------------
void LogDB::httpWebSocketPage( std::ostream& ostr, Poco::Net::HTTPServerRequest& req, Poco::Net::HTTPServerResponse& resp ) void LogDB::httpWebSocketPage( std::ostream& ostr, Poco::Net::HTTPServerRequest& req, Poco::Net::HTTPServerResponse& resp )
{ {
using Poco::Net::HTTPResponse; using Poco::Net::HTTPResponse;
......
...@@ -313,6 +313,10 @@ namespace uniset ...@@ -313,6 +313,10 @@ namespace uniset
std::string httpHost = { "" }; std::string httpHost = { "" };
int httpPort = { 0 }; int httpPort = { 0 };
double wsHeartbeatTime_sec = { 3.0 };
double wsSendTime_sec = { 0.5 };
size_t wsMaxSend = { 200 };
/*! класс реализует работу с websocket через eventloop /*! класс реализует работу с websocket через eventloop
* Из-за того, что поступление логов может быть достаточно быстрым * Из-за того, что поступление логов может быть достаточно быстрым
* чтобы не "завалить" браузер кучей сообщений, * чтобы не "завалить" браузер кучей сообщений,
...@@ -345,6 +349,11 @@ namespace uniset ...@@ -345,6 +349,11 @@ namespace uniset
void waitCompletion(); void waitCompletion();
// настройка
void setHearbeatTime( const double& sec );
void setSendPeriod( const double& sec );
void setMaxSendCount( size_t val );
protected: protected:
void write(); void write();
...@@ -401,7 +410,7 @@ namespace uniset ...@@ -401,7 +410,7 @@ namespace uniset
{ {
public: public:
LogDBRequestHandlerFactory( LogDB* l ): logdb(l) {} LogDBRequestHandlerFactory( LogDB* l ): logdb(l) {}
virtual ~LogDBRequestHandlerFactory() {}; virtual ~LogDBRequestHandlerFactory() {}
virtual Poco::Net::HTTPRequestHandler* createRequestHandler( const Poco::Net::HTTPServerRequest& req ) override; virtual Poco::Net::HTTPRequestHandler* createRequestHandler( const Poco::Net::HTTPServerRequest& req ) override;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment