Commit eceea3c3 authored by Pavel Vainerman's avatar Pavel Vainerman

fix after merge

parent 36839d01
...@@ -594,10 +594,7 @@ AC_CONFIG_FILES([Makefile ...@@ -594,10 +594,7 @@ AC_CONFIG_FILES([Makefile
extensions/HttpResolver/Makefile extensions/HttpResolver/Makefile
extensions/HttpResolver/tests/Makefile extensions/HttpResolver/tests/Makefile
extensions/UWebSocketGate/Makefile extensions/UWebSocketGate/Makefile
<<<<<<< HEAD
=======
extensions/UWebSocketGate/tests/Makefile extensions/UWebSocketGate/tests/Makefile
>>>>>>> 2.9.4-alt0.1
testsuite/Makefile testsuite/Makefile
wrappers/Makefile wrappers/Makefile
wrappers/python/lib/Makefile wrappers/python/lib/Makefile
......
...@@ -7,11 +7,7 @@ SUBDIRS = lib include SharedMemory SharedMemory/tests IOControl IOControl/tests ...@@ -7,11 +7,7 @@ SUBDIRS = lib include SharedMemory SharedMemory/tests IOControl IOControl/tests
ModbusMaster ModbusSlave SMViewer UniNetwork UNetUDP UNetUDP/tests \ ModbusMaster ModbusSlave SMViewer UniNetwork UNetUDP UNetUDP/tests \
DBServer-MySQL DBServer-SQLite DBServer-PostgreSQL MQTTPublisher \ DBServer-MySQL DBServer-SQLite DBServer-PostgreSQL MQTTPublisher \
RRDServer tests ModbusMaster/tests ModbusSlave/tests LogDB LogDB/tests \ RRDServer tests ModbusMaster/tests ModbusSlave/tests LogDB LogDB/tests \
<<<<<<< HEAD
Backend-OpenTSDB HttpResolver HttpResolver/tests UWebSocketGate
=======
Backend-OpenTSDB HttpResolver HttpResolver/tests UWebSocketGate UWebSocketGate/tests Backend-OpenTSDB HttpResolver HttpResolver/tests UWebSocketGate UWebSocketGate/tests
>>>>>>> 2.9.4-alt0.1
pkgconfigdir = $(libdir)/pkgconfig pkgconfigdir = $(libdir)/pkgconfig
......
<<<<<<< HEAD
=======
if ENABLE_REST_API if ENABLE_REST_API
>>>>>>> 2.9.4-alt0.1
bin_PROGRAMS = @PACKAGE@-wsgate bin_PROGRAMS = @PACKAGE@-wsgate
@PACKAGE@_wsgate_LDADD = $(top_builddir)/lib/libUniSet2.la @PACKAGE@_wsgate_LDADD = $(top_builddir)/lib/libUniSet2.la
@PACKAGE@_wsgate_SOURCES = UWebSocketGate.cc main.cc @PACKAGE@_wsgate_SOURCES = UWebSocketGate.cc main.cc
include $(top_builddir)/include.mk include $(top_builddir)/include.mk
<<<<<<< HEAD
=======
endif endif
>>>>>>> 2.9.4-alt0.1
...@@ -66,15 +66,6 @@ UWebSocketGate::UWebSocketGate( uniset::ObjectId id, xmlNode* cnode, const strin ...@@ -66,15 +66,6 @@ UWebSocketGate::UWebSocketGate( uniset::ObjectId id, xmlNode* cnode, const strin
sigINT.set<UWebSocketGate, &UWebSocketGate::onTerminate>(this); sigINT.set<UWebSocketGate, &UWebSocketGate::onTerminate>(this);
iocheck.set<UWebSocketGate, &UWebSocketGate::checkMessages>(this); iocheck.set<UWebSocketGate, &UWebSocketGate::checkMessages>(this);
<<<<<<< HEAD
#ifndef DISABLE_REST_API
wsHeartbeatTime_sec = (float)conf->getArgPInt("--" + prefix + "ws-heartbeat-time", it.getProp("wsPingTime"), wsHeartbeatTime_sec) / 1000.0;
wsSendTime_sec = (float)conf->getArgPInt("--" + prefix + "ws-send-time", it.getProp("wsSendTime"), wsSendTime_sec) / 1000.0;
wsMaxSend = conf->getArgPInt("--" + prefix + "ws-max-send", it.getProp("wsMaxSend"), wsMaxSend);
httpHost = conf->getArgParam("--" + prefix + "httpserver-host", "localhost");
httpPort = conf->getArgPInt("--" + prefix + "httpserver-port", 8080);
=======
maxMessagesProcessing = conf->getArgPInt("--" + prefix + "max-messages-processing", conf->getField("maxMessagesProcessing"), maxMessagesProcessing); maxMessagesProcessing = conf->getArgPInt("--" + prefix + "max-messages-processing", conf->getField("maxMessagesProcessing"), maxMessagesProcessing);
if( maxMessagesProcessing < 0 ) if( maxMessagesProcessing < 0 )
...@@ -94,7 +85,6 @@ UWebSocketGate::UWebSocketGate( uniset::ObjectId id, xmlNode* cnode, const strin ...@@ -94,7 +85,6 @@ UWebSocketGate::UWebSocketGate( uniset::ObjectId id, xmlNode* cnode, const strin
httpHost = conf->getArgParam("--" + prefix + "httpserver-host", "localhost"); httpHost = conf->getArgParam("--" + prefix + "httpserver-host", "localhost");
httpPort = conf->getArgPInt("--" + prefix + "httpserver-port", 8081); httpPort = conf->getArgPInt("--" + prefix + "httpserver-port", 8081);
>>>>>>> 2.9.4-alt0.1
httpCORS_allow = conf->getArgParam("--" + prefix + "httpserver-cors-allow", "*"); httpCORS_allow = conf->getArgParam("--" + prefix + "httpserver-cors-allow", "*");
mylog1 << myname << "(init): http server parameters " << httpHost << ":" << httpPort << endl; mylog1 << myname << "(init): http server parameters " << httpHost << ":" << httpPort << endl;
...@@ -168,12 +158,6 @@ void UWebSocketGate::checkMessages( ev::timer& t, int revents ) ...@@ -168,12 +158,6 @@ void UWebSocketGate::checkMessages( ev::timer& t, int revents )
if( EV_ERROR & revents ) if( EV_ERROR & revents )
return; return;
<<<<<<< HEAD
auto m = receiveMessage();
if( m )
processingMessage(m.get());
=======
for( int i = 0; i < maxMessagesProcessing; i++ ) for( int i = 0; i < maxMessagesProcessing; i++ )
{ {
auto m = receiveMessage(); auto m = receiveMessage();
...@@ -183,56 +167,18 @@ void UWebSocketGate::checkMessages( ev::timer& t, int revents ) ...@@ -183,56 +167,18 @@ void UWebSocketGate::checkMessages( ev::timer& t, int revents )
processingMessage(m.get()); processingMessage(m.get());
} }
>>>>>>> 2.9.4-alt0.1
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
void UWebSocketGate::sensorInfo( const SensorMessage* sm ) void UWebSocketGate::sensorInfo( const SensorMessage* sm )
{ {
uniset_rwmutex_wrlock lock(wsocksMutex); uniset_rwmutex_wrlock lock(wsocksMutex);
<<<<<<< HEAD
=======
mylog5 << myname << "(sensorInfo): sid=" << sm->id << " val=" << sm->value << endl; mylog5 << myname << "(sensorInfo): sid=" << sm->id << " val=" << sm->value << endl;
>>>>>>> 2.9.4-alt0.1
for( auto&& s : wsocks ) for( auto&& s : wsocks )
s->sensorInfo(sm); s->sensorInfo(sm);
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
<<<<<<< HEAD
UWebSocketGate::RespondFormat UWebSocketGate::from_string(const string& str)
{
if( str == "json" )
return RespondFormat::JSON;
if( str == "txt" )
return RespondFormat::TXT;
if( str == "raw" )
return RespondFormat::RAW;
return RespondFormat::UNKNOWN;
}
//--------------------------------------------------------------------------------------------
UTCPCore::Buffer* UWebSocketGate::format( const SensorMessage* sm, const std::string& err, const RespondFormat fmt )
{
if( fmt == RespondFormat::JSON )
return to_json(sm, err);
if( fmt == RespondFormat::TXT )
return to_txt(sm, err);
if( fmt == RespondFormat::RAW )
return to_json(sm, err);
return to_json(sm, err);
}
//--------------------------------------------------------------------------------------------
UTCPCore::Buffer* UWebSocketGate::to_json( const SensorMessage* sm, const std::string& err )
{
Poco::JSON::Object::Ptr json = new Poco::JSON::Object();
=======
Poco::JSON::Object::Ptr UWebSocketGate::UWebSocket::to_short_json( sinfo* si ) Poco::JSON::Object::Ptr UWebSocketGate::UWebSocket::to_short_json( sinfo* si )
{ {
Poco::JSON::Object::Ptr json = new Poco::JSON::Object(); Poco::JSON::Object::Ptr json = new Poco::JSON::Object();
...@@ -248,18 +194,13 @@ Poco::JSON::Object::Ptr UWebSocketGate::to_json( const SensorMessage* sm, const ...@@ -248,18 +194,13 @@ Poco::JSON::Object::Ptr UWebSocketGate::to_json( const SensorMessage* sm, const
Poco::JSON::Object::Ptr json = new Poco::JSON::Object(); Poco::JSON::Object::Ptr json = new Poco::JSON::Object();
json->set("type", "SensorInfo"); json->set("type", "SensorInfo");
>>>>>>> 2.9.4-alt0.1
json->set("error", err); json->set("error", err);
json->set("id", sm->id); json->set("id", sm->id);
json->set("value", sm->value); json->set("value", sm->value);
json->set("name", uniset::ORepHelpers::getShortName(uniset_conf()->oind->getMapName(sm->id))); json->set("name", uniset::ORepHelpers::getShortName(uniset_conf()->oind->getMapName(sm->id)));
json->set("sm_tv_sec", sm->sm_tv.tv_sec); json->set("sm_tv_sec", sm->sm_tv.tv_sec);
json->set("sm_tv_nsec", sm->sm_tv.tv_nsec); json->set("sm_tv_nsec", sm->sm_tv.tv_nsec);
<<<<<<< HEAD
json->set("type", uniset::iotype2str(sm->sensor_type));
=======
json->set("iotype", uniset::iotype2str(sm->sensor_type)); json->set("iotype", uniset::iotype2str(sm->sensor_type));
>>>>>>> 2.9.4-alt0.1
json->set("undefined", sm->undefined ); json->set("undefined", sm->undefined );
json->set("supplier", sm->supplier ); json->set("supplier", sm->supplier );
json->set("tv_sec", sm->tm.tv_sec); json->set("tv_sec", sm->tm.tv_sec);
...@@ -273,36 +214,7 @@ Poco::JSON::Object::Ptr UWebSocketGate::to_json( const SensorMessage* sm, const ...@@ -273,36 +214,7 @@ Poco::JSON::Object::Ptr UWebSocketGate::to_json( const SensorMessage* sm, const
calibr->set("rmax", sm->ci.maxRaw); calibr->set("rmax", sm->ci.maxRaw);
calibr->set("precision", sm->ci.precision); calibr->set("precision", sm->ci.precision);
<<<<<<< HEAD
ostringstream out;
json->stringify(out);
return new UTCPCore::Buffer(out.str());
}
//--------------------------------------------------------------------------------------------
UTCPCore::Buffer* UWebSocketGate::to_txt( const SensorMessage* sm, const std::string& err )
{
ostringstream out;
if( err.empty() )
out << SMonitor::printEvent(sm) << endl;
else
{
out << uniset::timeToString(sm->sm_tv.tv_sec)
<< "(" << setw(9) << sm->sm_tv.tv_nsec << ")"
<< " id=" << sm->id
<< " error=" << err
<< endl;
}
return new UTCPCore::Buffer(out.str());
}
//--------------------------------------------------------------------------------------------
UTCPCore::Buffer* UWebSocketGate::to_raw( const SensorMessage* sm, const std::string& err )
{
return new UTCPCore::Buffer( (const unsigned char*)(sm), sizeof(*sm) );
=======
return json; return json;
>>>>>>> 2.9.4-alt0.1
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
std::shared_ptr<UWebSocketGate> UWebSocketGate::init_wsgate( int argc, const char* const* argv, const std::string& prefix ) std::shared_ptr<UWebSocketGate> UWebSocketGate::init_wsgate( int argc, const char* const* argv, const std::string& prefix )
...@@ -321,29 +233,16 @@ std::shared_ptr<UWebSocketGate> UWebSocketGate::init_wsgate( int argc, const cha ...@@ -321,29 +233,16 @@ std::shared_ptr<UWebSocketGate> UWebSocketGate::init_wsgate( int argc, const cha
void UWebSocketGate::help_print() void UWebSocketGate::help_print()
{ {
cout << "Default: prefix='ws'" << endl; cout << "Default: prefix='ws'" << endl;
<<<<<<< HEAD
cout << "--prefix-name name - Имя. Для поиска настроечной секции в configure.xml" << endl;
=======
cout << "--prefix-name name - Имя. Для поиска настроечной секции в configure.xml" << endl; cout << "--prefix-name name - Имя. Для поиска настроечной секции в configure.xml" << endl;
cout << "--uniset-object-size-message-queue num - Размер uniset-очереди сообщений" << endl; cout << "--uniset-object-size-message-queue num - Размер uniset-очереди сообщений" << endl;
cout << "--prefix-msg-check-time msec - Период опроса uniset-очереди сообщений, для обработки новых сообщений. По умолчанию: 10 мсек" << endl; cout << "--prefix-msg-check-time msec - Период опроса uniset-очереди сообщений, для обработки новых сообщений. По умолчанию: 10 мсек" << endl;
cout << "--prefix-max-messages-processing num - Количество uniset-сообщений обрабатывамых за один раз. По умолчанию 50. По умолчанию: 100" << endl; cout << "--prefix-max-messages-processing num - Количество uniset-сообщений обрабатывамых за один раз. По умолчанию 50. По умолчанию: 100" << endl;
>>>>>>> 2.9.4-alt0.1
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-heartbeat-time msec - Период сердцебиения в соединении. По умолчанию: 3000 мсек" << endl;
cout << "--prefix-ws-send-time msec - Период посылки сообщений. По умолчанию: 500 мсек" << endl; cout << "--prefix-ws-send-time msec - Период посылки сообщений. По умолчанию: 500 мсек" << endl;
cout << "--prefix-ws-max num - Максимальное число сообщений посылаемых за один раз. По умолчанию: 200" << endl; cout << "--prefix-ws-max num - Максимальное число сообщений посылаемых за один раз. По умолчанию: 200" << endl;
<<<<<<< HEAD
cout << "http: " << endl;
cout << "--prefix-httpserver-host ip - IP на котором слушает http сервер. По умолчанию: localhost" << endl;
cout << "--prefix-httpserver-port num - Порт на котором принимать запросы. По умолчанию: 8080" << endl;
cout << "--prefix-httpserver-max-queued num - Размер очереди запросов к http серверу. По умолчанию: 100" << endl;
cout << "--prefix-httpserver-max-threads num - Разрешённое количество потоков для http-сервера. По умолчанию: 3" << endl;
cout << "--prefix-httpserver-cors-allow addr - (CORS): Access-Control-Allow-Origin. Default: *" << endl;
=======
cout << "--prefix-ws-cmd num - Максимальное число команд обрабатываемых за один раз. По умолчанию: 100" << endl; cout << "--prefix-ws-cmd num - Максимальное число команд обрабатываемых за один раз. По умолчанию: 100" << endl;
cout << "http: " << endl; cout << "http: " << endl;
...@@ -352,7 +251,6 @@ void UWebSocketGate::help_print() ...@@ -352,7 +251,6 @@ void UWebSocketGate::help_print()
cout << "--prefix-httpserver-max-queued num - Размер очереди запросов к http серверу. По умолчанию: 100" << endl; cout << "--prefix-httpserver-max-queued num - Размер очереди запросов к http серверу. По умолчанию: 100" << endl;
cout << "--prefix-httpserver-max-threads num - Разрешённое количество потоков для http-сервера. По умолчанию: 3" << endl; cout << "--prefix-httpserver-max-threads num - Разрешённое количество потоков для http-сервера. По умолчанию: 3" << endl;
cout << "--prefix-httpserver-cors-allow addr - (CORS): Access-Control-Allow-Origin. Default: *" << endl; cout << "--prefix-httpserver-cors-allow addr - (CORS): Access-Control-Allow-Origin. Default: *" << endl;
>>>>>>> 2.9.4-alt0.1
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UWebSocketGate::run( bool async ) void UWebSocketGate::run( bool async )
...@@ -509,51 +407,6 @@ void UWebSocketGate::handleRequest( Poco::Net::HTTPServerRequest& req, Poco::Net ...@@ -509,51 +407,6 @@ void UWebSocketGate::handleRequest( Poco::Net::HTTPServerRequest& req, Poco::Net
// проверка подключения к страничке со списком websocket-ов // проверка подключения к страничке со списком websocket-ов
if( !seg.empty() && seg[0] == "wsgate" ) if( !seg.empty() && seg[0] == "wsgate" )
{ {
<<<<<<< HEAD
if( seg.size() > 2 )
{
if( seg[1] == "json" || seg[1] == "txt" || seg[1] == "raw" )
{
ostringstream params;
params << seg[2] << "&format=" << seg[1];
httpWebSocketConnectPage(out, req, resp, params.str());
}
else
{
auto jdata = respError(resp, HTTPResponse::HTTP_BAD_REQUEST, "Unknown format. Must be [json,txt,raw]");
jdata->stringify(out);
out.flush();
}
return;
}
if( seg.size() > 1 )
{
if( seg[1] == "json" || seg[1] == "txt" || seg[1] == "raw" )
{
ostringstream params;
auto qp = uri.getQueryParameters();
for( const auto& p : qp )
{
params << p.first;
if( !p.second.empty() )
params << "=" << p.second;
params << "&";
}
params << "format=" << seg[1];
httpWebSocketConnectPage(out, req, resp, params.str());
}
else
httpWebSocketConnectPage(out, req, resp, seg[1]);
return;
}
=======
ostringstream params; ostringstream params;
auto qp = uri.getQueryParameters(); auto qp = uri.getQueryParameters();
...@@ -575,15 +428,10 @@ void UWebSocketGate::handleRequest( Poco::Net::HTTPServerRequest& req, Poco::Net ...@@ -575,15 +428,10 @@ void UWebSocketGate::handleRequest( Poco::Net::HTTPServerRequest& req, Poco::Net
httpWebSocketConnectPage(out, req, resp, params.str()); httpWebSocketConnectPage(out, req, resp, params.str());
out.flush(); out.flush();
return; return;
>>>>>>> 2.9.4-alt0.1
} }
// default page // default page
httpWebSocketPage(out, req, resp); httpWebSocketPage(out, req, resp);
<<<<<<< HEAD
=======
>>>>>>> 2.9.4-alt0.1
out.flush(); out.flush();
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
...@@ -618,11 +466,7 @@ void UWebSocketGate::onWebSocketSession(Poco::Net::HTTPServerRequest& req, Poco: ...@@ -618,11 +466,7 @@ void UWebSocketGate::onWebSocketSession(Poco::Net::HTTPServerRequest& req, Poco:
mylog3 << req.getHost() << ": WSOCKET: " << uri.getQuery() << endl; mylog3 << req.getHost() << ": WSOCKET: " << uri.getQuery() << endl;
<<<<<<< HEAD
// example: ws://host:port/wsgate/?s1,s2,s3,s4&format=[json,txt,raw]
=======
// example: ws://host:port/wsgate/?s1,s2,s3,s4 // example: ws://host:port/wsgate/?s1,s2,s3,s4
>>>>>>> 2.9.4-alt0.1
if( seg.empty() || seg[0] != "wsgate" ) if( seg.empty() || seg[0] != "wsgate" )
{ {
resp.setStatus(HTTPResponse::HTTP_BAD_REQUEST); resp.setStatus(HTTPResponse::HTTP_BAD_REQUEST);
...@@ -630,11 +474,7 @@ void UWebSocketGate::onWebSocketSession(Poco::Net::HTTPServerRequest& req, Poco: ...@@ -630,11 +474,7 @@ void UWebSocketGate::onWebSocketSession(Poco::Net::HTTPServerRequest& req, Poco:
resp.setStatusAndReason(HTTPResponse::HTTP_BAD_REQUEST); resp.setStatusAndReason(HTTPResponse::HTTP_BAD_REQUEST);
resp.setContentLength(0); resp.setContentLength(0);
std::ostream& err = resp.send(); std::ostream& err = resp.send();
<<<<<<< HEAD
err << "Bad request. Must be: ws://host:port/wsgate/?s1,s2,s3,s4&format=[json,txt,raw]";
=======
err << "Bad request. Must be: ws://host:port/wsgate/?s1,s2,s3,s4"; err << "Bad request. Must be: ws://host:port/wsgate/?s1,s2,s3,s4";
>>>>>>> 2.9.4-alt0.1
err.flush(); err.flush();
return; return;
} }
...@@ -695,49 +535,17 @@ std::shared_ptr<UWebSocketGate::UWebSocket> UWebSocketGate::newWebSocket( Poco:: ...@@ -695,49 +535,17 @@ std::shared_ptr<UWebSocketGate::UWebSocket> UWebSocketGate::newWebSocket( Poco::
std::shared_ptr<UWebSocket> ws; std::shared_ptr<UWebSocket> ws;
<<<<<<< HEAD
RespondFormat fmt = RespondFormat::JSON;
=======
>>>>>>> 2.9.4-alt0.1
std::string slist(""); std::string slist("");
for( const auto& p : qp ) for( const auto& p : qp )
{ {
<<<<<<< HEAD
// обрабатываем только первый встреченный параметр
if( p.first == "format" )
fmt = from_string(p.second);
else if( p.second.empty() && !p.first.empty() )
=======
if( p.second.empty() && !p.first.empty() ) if( p.second.empty() && !p.first.empty() )
>>>>>>> 2.9.4-alt0.1
slist += ("," + p.first); slist += ("," + p.first);
} }
if( qp.size() == 1 && qp[0].first.empty() ) if( qp.size() == 1 && qp[0].first.empty() )
slist = qp[0].first; slist = qp[0].first;
<<<<<<< HEAD
// auto idlist = uniset::explode(slist);
#warning DEBUG
auto idlist = uniset::explode("34,23,54");
if( idlist.empty() )
{
resp->setStatus(HTTPResponse::HTTP_BAD_REQUEST);
resp->setContentType("text/html");
resp->setStatusAndReason(HTTPResponse::HTTP_BAD_REQUEST);
resp->setContentLength(0);
std::ostream& err = resp->send();
err << "Error: no list of sensors for '" << slist << "'. Use: http://host:port/wsgate/?s1,s2,s3";
err.flush();
mywarn << myname << "(newWebSocket): error: no list of sensors for '" << slist << "'" << endl;
return nullptr;
}
=======
auto idlist = uniset::explode(slist); auto idlist = uniset::explode(slist);
// if( idlist.empty() ) // if( idlist.empty() )
...@@ -754,7 +562,6 @@ std::shared_ptr<UWebSocketGate::UWebSocket> UWebSocketGate::newWebSocket( Poco:: ...@@ -754,7 +562,6 @@ std::shared_ptr<UWebSocketGate::UWebSocket> UWebSocketGate::newWebSocket( Poco::
// return nullptr; // return nullptr;
// } // }
>>>>>>> 2.9.4-alt0.1
{ {
uniset_rwmutex_wrlock lock(wsocksMutex); uniset_rwmutex_wrlock lock(wsocksMutex);
...@@ -762,19 +569,6 @@ std::shared_ptr<UWebSocketGate::UWebSocket> UWebSocketGate::newWebSocket( Poco:: ...@@ -762,19 +569,6 @@ std::shared_ptr<UWebSocketGate::UWebSocket> UWebSocketGate::newWebSocket( Poco::
ws->setHearbeatTime(wsHeartbeatTime_sec); ws->setHearbeatTime(wsHeartbeatTime_sec);
ws->setSendPeriod(wsSendTime_sec); ws->setSendPeriod(wsSendTime_sec);
ws->setMaxSendCount(wsMaxSend); ws->setMaxSendCount(wsMaxSend);
<<<<<<< HEAD
ws->mylog = mylog;
ws->setRespondFormat(fmt);
for( const auto& i : idlist.getList() )
{
mylog3 << myname << ": add " << i << endl;
UWebSocket::sinfo si;
si.id = i;
si.cmd = "ask";
ws->add(si);
=======
ws->setMaxCmdCount(wsMaxCmd); ws->setMaxCmdCount(wsMaxCmd);
ws->mylog = mylog; ws->mylog = mylog;
...@@ -782,7 +576,6 @@ std::shared_ptr<UWebSocketGate::UWebSocket> UWebSocketGate::newWebSocket( Poco:: ...@@ -782,7 +576,6 @@ std::shared_ptr<UWebSocketGate::UWebSocket> UWebSocketGate::newWebSocket( Poco::
{ {
mylog3 << myname << ": ask sid=" << i << endl; mylog3 << myname << ": ask sid=" << i << endl;
ws->ask(i); ws->ask(i);
>>>>>>> 2.9.4-alt0.1
} }
wsocks.emplace_back(ws); wsocks.emplace_back(ws);
...@@ -809,11 +602,7 @@ void UWebSocketGate::delWebSocket(std::shared_ptr<UWebSocket>& ws ) ...@@ -809,11 +602,7 @@ void UWebSocketGate::delWebSocket(std::shared_ptr<UWebSocket>& ws )
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
<<<<<<< HEAD
const std::string UWebSocketGate::UWebSocket::ping_str = { "." };
=======
const std::string UWebSocketGate::UWebSocket::ping_str = { "{\"data\": [{\"type\": \"Ping\"}]}" }; const std::string UWebSocketGate::UWebSocket::ping_str = { "{\"data\": [{\"type\": \"Ping\"}]}" };
>>>>>>> 2.9.4-alt0.1
UWebSocketGate::UWebSocket::UWebSocket(Poco::Net::HTTPServerRequest* _req, UWebSocketGate::UWebSocket::UWebSocket(Poco::Net::HTTPServerRequest* _req,
Poco::Net::HTTPServerResponse* _resp): Poco::Net::HTTPServerResponse* _resp):
...@@ -874,12 +663,6 @@ void UWebSocketGate::UWebSocket::send( ev::timer& t, int revents ) ...@@ -874,12 +663,6 @@ void UWebSocketGate::UWebSocket::send( ev::timer& t, int revents )
if( EV_ERROR & revents ) if( EV_ERROR & revents )
return; return;
<<<<<<< HEAD
for( size_t i = 0; !wbuf.empty() && i < maxsend && !cancelled; i++ )
write();
// read(iorecv,revents);
=======
if( !jbuf.empty() ) if( !jbuf.empty() )
{ {
// сперва формируем очередной пакет(поток байт) из накопившихся данных для отправки // сперва формируем очередной пакет(поток байт) из накопившихся данных для отправки
...@@ -914,7 +697,6 @@ void UWebSocketGate::UWebSocket::send( ev::timer& t, int revents ) ...@@ -914,7 +697,6 @@ void UWebSocketGate::UWebSocket::send( ev::timer& t, int revents )
{ {
write(); write();
} }
>>>>>>> 2.9.4-alt0.1
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UWebSocketGate::UWebSocket::ping( ev::timer& t, int revents ) void UWebSocketGate::UWebSocket::ping( ev::timer& t, int revents )
...@@ -1005,46 +787,24 @@ void UWebSocketGate::UWebSocket::read( ev::io& io, int revents ) ...@@ -1005,46 +787,24 @@ void UWebSocketGate::UWebSocket::read( ev::io& io, int revents )
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
<<<<<<< HEAD
void UWebSocketGate::UWebSocket::add( const sinfo& si )
{
smap[si.id] = si;
=======
void UWebSocketGate::UWebSocket::ask( uniset::ObjectId id ) void UWebSocketGate::UWebSocket::ask( uniset::ObjectId id )
{ {
sinfo s; sinfo s;
s.id = id; s.id = id;
s.cmd = "ask"; s.cmd = "ask";
qcmd.push(s); qcmd.push(s);
>>>>>>> 2.9.4-alt0.1
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UWebSocketGate::UWebSocket::del( uniset::ObjectId id ) void UWebSocketGate::UWebSocket::del( uniset::ObjectId id )
{ {
<<<<<<< HEAD
auto s = smap.find(id);
if( s != smap.end() )
s->second.cmd = "del";
=======
sinfo s; sinfo s;
s.id = id; s.id = id;
s.cmd = "del"; s.cmd = "del";
qcmd.push(s); qcmd.push(s);
>>>>>>> 2.9.4-alt0.1
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UWebSocketGate::UWebSocket::set( uniset::ObjectId id, long value ) void UWebSocketGate::UWebSocket::set( uniset::ObjectId id, long value )
{ {
<<<<<<< HEAD
auto s = smap.find(id);
if( s != smap.end() )
{
s->second.value = value;
s->second.cmd = "set";
}
=======
sinfo s; sinfo s;
s.id = id; s.id = id;
s.value = value; s.value = value;
...@@ -1058,7 +818,6 @@ void UWebSocketGate::UWebSocket::get( uniset::ObjectId id ) ...@@ -1058,7 +818,6 @@ void UWebSocketGate::UWebSocket::get( uniset::ObjectId id )
s.id = id; s.id = id;
s.cmd = "get"; s.cmd = "get";
qcmd.push(s); qcmd.push(s);
>>>>>>> 2.9.4-alt0.1
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UWebSocketGate::UWebSocket::sensorInfo( const uniset::SensorMessage* sm ) void UWebSocketGate::UWebSocket::sensorInfo( const uniset::SensorMessage* sm )
...@@ -1071,21 +830,13 @@ void UWebSocketGate::UWebSocket::sensorInfo( const uniset::SensorMessage* sm ) ...@@ -1071,21 +830,13 @@ void UWebSocketGate::UWebSocket::sensorInfo( const uniset::SensorMessage* sm )
if( s == smap.end() ) if( s == smap.end() )
return; return;
<<<<<<< HEAD
if( wbuf.size() > maxsize )
=======
if( jbuf.size() > maxsize ) if( jbuf.size() > maxsize )
>>>>>>> 2.9.4-alt0.1
{ {
mywarn << req->clientAddress().toString() << " lost messages..." << endl; mywarn << req->clientAddress().toString() << " lost messages..." << endl;
return; return;
} }
<<<<<<< HEAD
wbuf.emplace(UWebSocketGate::format(sm, s->second.err, fmt));
=======
jbuf.emplace(UWebSocketGate::to_json(sm, s->second.err)); jbuf.emplace(UWebSocketGate::to_json(sm, s->second.err));
>>>>>>> 2.9.4-alt0.1
if( ioping.is_active() ) if( ioping.is_active() )
ioping.stop(); ioping.stop();
...@@ -1093,30 +844,16 @@ void UWebSocketGate::UWebSocket::sensorInfo( const uniset::SensorMessage* sm ) ...@@ -1093,30 +844,16 @@ void UWebSocketGate::UWebSocket::sensorInfo( const uniset::SensorMessage* sm )
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UWebSocketGate::UWebSocket::doCommand( const std::shared_ptr<UInterface>& ui ) void UWebSocketGate::UWebSocket::doCommand( const std::shared_ptr<UInterface>& ui )
{ {
<<<<<<< HEAD
for( auto&& io : smap )
{
auto& s = io.second;
=======
for( size_t i = 0; i < maxcmd && !qcmd.empty(); i++ ) for( size_t i = 0; i < maxcmd && !qcmd.empty(); i++ )
{ {
auto s = qcmd.front(); auto s = qcmd.front();
qcmd.pop(); qcmd.pop();
>>>>>>> 2.9.4-alt0.1
try try
{ {
if( s.cmd == "" ) if( s.cmd == "" )
continue; continue;
<<<<<<< HEAD
if( s.cmd == "ask" )
ui->askSensor(s.id, UniversalIO::UIONotify);
else if( s.cmd == "del" )
ui->askSensor(s.id, UniversalIO::UIODontNotify);
else if( s.cmd == "set" )
ui->setValue(s.id, s.value);
=======
mylog3 << req->clientAddress().toString() << "(doCommand): " mylog3 << req->clientAddress().toString() << "(doCommand): "
<< s.cmd << " sid=" << s.id << s.cmd << " sid=" << s.id
<< " value=" << s.value << " value=" << s.value
...@@ -1145,7 +882,6 @@ void UWebSocketGate::UWebSocket::doCommand( const std::shared_ptr<UInterface>& u ...@@ -1145,7 +882,6 @@ void UWebSocketGate::UWebSocket::doCommand( const std::shared_ptr<UInterface>& u
s.err = ""; s.err = "";
sendShortResponse(s); sendShortResponse(s);
} }
>>>>>>> 2.9.4-alt0.1
s.err = ""; s.err = "";
s.cmd = ""; s.cmd = "";
...@@ -1153,24 +889,12 @@ void UWebSocketGate::UWebSocket::doCommand( const std::shared_ptr<UInterface>& u ...@@ -1153,24 +889,12 @@ void UWebSocketGate::UWebSocket::doCommand( const std::shared_ptr<UInterface>& u
catch( std::exception& ex ) catch( std::exception& ex )
{ {
mycrit << "(UWebSocket::doCommand): " << ex.what() << endl; mycrit << "(UWebSocket::doCommand): " << ex.what() << endl;
<<<<<<< HEAD
sendError(s, ex.what());
=======
s.err = ex.what(); s.err = ex.what();
sendResponse(s); sendResponse(s);
>>>>>>> 2.9.4-alt0.1
} }
} }
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
<<<<<<< HEAD
void UWebSocketGate::UWebSocket::sendError( sinfo& si, const std::string& err )
{
uniset::SensorMessage sm(si.id, 0);
// sm.undefined = true;
si.err = err;
sensorInfo(&sm);
=======
void UWebSocketGate::UWebSocket::sendShortResponse( sinfo& si ) void UWebSocketGate::UWebSocket::sendShortResponse( sinfo& si )
{ {
if( jbuf.size() > maxsize ) if( jbuf.size() > maxsize )
...@@ -1199,7 +923,6 @@ void UWebSocketGate::UWebSocket::sendResponse( sinfo& si ) ...@@ -1199,7 +923,6 @@ void UWebSocketGate::UWebSocket::sendResponse( sinfo& si )
if( ioping.is_active() ) if( ioping.is_active() )
ioping.stop(); ioping.stop();
>>>>>>> 2.9.4-alt0.1
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UWebSocketGate::UWebSocket::onCommand( const string& cmdtxt ) void UWebSocketGate::UWebSocket::onCommand( const string& cmdtxt )
...@@ -1220,10 +943,7 @@ void UWebSocketGate::UWebSocket::onCommand( const string& cmdtxt ) ...@@ -1220,10 +943,7 @@ void UWebSocketGate::UWebSocket::onCommand( const string& cmdtxt )
for( const auto& i : idlist ) for( const auto& i : idlist )
set(i.si.id, i.val); set(i.si.id, i.val);
<<<<<<< HEAD
=======
// уведомление о новой команде // уведомление о новой команде
>>>>>>> 2.9.4-alt0.1
cmdsignal->send(); cmdsignal->send();
} }
else if( cmd == "ask" ) else if( cmd == "ask" )
...@@ -1234,20 +954,9 @@ void UWebSocketGate::UWebSocket::onCommand( const string& cmdtxt ) ...@@ -1234,20 +954,9 @@ void UWebSocketGate::UWebSocket::onCommand( const string& cmdtxt )
auto idlist = uniset::explode(params); auto idlist = uniset::explode(params);
for( const auto& id : idlist.getList() ) for( const auto& id : idlist.getList() )
<<<<<<< HEAD
{
sinfo s;
s.id = id;
s.cmd = "ask";
add(s);
}
// даём команду на перезаказ датчиков
=======
ask(id); ask(id);
// уведомление о новой команде // уведомление о новой команде
>>>>>>> 2.9.4-alt0.1
cmdsignal->send(); cmdsignal->send();
} }
else if( cmd == "del" ) else if( cmd == "del" )
...@@ -1260,9 +969,6 @@ void UWebSocketGate::UWebSocket::onCommand( const string& cmdtxt ) ...@@ -1260,9 +969,6 @@ void UWebSocketGate::UWebSocket::onCommand( const string& cmdtxt )
for( const auto& id : idlist.getList() ) for( const auto& id : idlist.getList() )
del(id); del(id);
<<<<<<< HEAD
// даём команду на перезаказ датчиков
=======
// уведомление о новой команде // уведомление о новой команде
cmdsignal->send(); cmdsignal->send();
} }
...@@ -1277,7 +983,6 @@ void UWebSocketGate::UWebSocket::onCommand( const string& cmdtxt ) ...@@ -1277,7 +983,6 @@ void UWebSocketGate::UWebSocket::onCommand( const string& cmdtxt )
get(id); get(id);
// уведомление о новой команде // уведомление о новой команде
>>>>>>> 2.9.4-alt0.1
cmdsignal->send(); cmdsignal->send();
} }
} }
...@@ -1306,11 +1011,7 @@ void UWebSocketGate::UWebSocket::write() ...@@ -1306,11 +1011,7 @@ void UWebSocketGate::UWebSocket::write()
int flags = WebSocket::FRAME_TEXT; int flags = WebSocket::FRAME_TEXT;
<<<<<<< HEAD
if( msg->len == 1 ) // это пинг состоящий из "."
=======
if( msg->len == ping_str.size() ) if( msg->len == ping_str.size() )
>>>>>>> 2.9.4-alt0.1
flags = WebSocket::FRAME_FLAG_FIN | WebSocket::FRAME_OP_PING; flags = WebSocket::FRAME_FLAG_FIN | WebSocket::FRAME_OP_PING;
try try
...@@ -1429,16 +1130,10 @@ void UWebSocketGate::UWebSocket::setMaxSendCount( size_t val ) ...@@ -1429,16 +1130,10 @@ void UWebSocketGate::UWebSocket::setMaxSendCount( size_t val )
maxsend = val; maxsend = val;
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
<<<<<<< HEAD
void UWebSocketGate::UWebSocket::setRespondFormat( UWebSocketGate::RespondFormat f )
{
fmt = f;
=======
void UWebSocketGate::UWebSocket::setMaxCmdCount( size_t val ) void UWebSocketGate::UWebSocket::setMaxCmdCount( size_t val )
{ {
if( val > 0 ) if( val > 0 )
maxcmd = val; maxcmd = val;
>>>>>>> 2.9.4-alt0.1
} }
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
void UWebSocketGate::httpWebSocketPage( std::ostream& ostr, Poco::Net::HTTPServerRequest& req, Poco::Net::HTTPServerResponse& resp ) void UWebSocketGate::httpWebSocketPage( std::ostream& ostr, Poco::Net::HTTPServerRequest& req, Poco::Net::HTTPServerResponse& resp )
...@@ -1460,16 +1155,7 @@ void UWebSocketGate::httpWebSocketPage( std::ostream& ostr, Poco::Net::HTTPServe ...@@ -1460,16 +1155,7 @@ void UWebSocketGate::httpWebSocketPage( std::ostream& ostr, Poco::Net::HTTPServe
ostr << " <li><a target='_blank' href=\"http://" ostr << " <li><a target='_blank' href=\"http://"
<< req.serverAddress().toString() << req.serverAddress().toString()
<<<<<<< HEAD
<< "/wsgate/json\">42,30,1042 [json]</a></li>"
<< endl;
ostr << " <li><a target='_blank' href=\"http://"
<< req.serverAddress().toString()
<< "/wsgate/txt\">42,30,1042 [txt]</a></li>"
=======
<< "/wsgate/?42,30,1042\">42,30,1042</a></li>" << "/wsgate/?42,30,1042\">42,30,1042</a></li>"
>>>>>>> 2.9.4-alt0.1
<< endl; << endl;
ostr << "</ul>" << endl; ostr << "</ul>" << endl;
...@@ -1513,11 +1199,7 @@ void UWebSocketGate::httpWebSocketConnectPage( ostream& ostr, ...@@ -1513,11 +1199,7 @@ void UWebSocketGate::httpWebSocketConnectPage( ostream& ostr,
ostr << "{" << endl; ostr << "{" << endl;
ostr << " if (\"WebSocket\" in window)" << endl; ostr << " if (\"WebSocket\" in window)" << endl;
ostr << " {" << endl; ostr << " {" << endl;
<<<<<<< HEAD
ostr << " var ws = new WebSocket(\"ws://" << req.serverAddress().toString() << "/wsgate/\");" << endl;
=======
ostr << " var ws = new WebSocket(\"ws://" << req.serverAddress().toString() << "/wsgate/?" << params << "\");" << endl; ostr << " var ws = new WebSocket(\"ws://" << req.serverAddress().toString() << "/wsgate/?" << params << "\");" << endl;
>>>>>>> 2.9.4-alt0.1
ostr << "setInterval(send_cmd, 1000);" << endl; ostr << "setInterval(send_cmd, 1000);" << endl;
ostr << " var l = document.getElementById('logname');" << endl; ostr << " var l = document.getElementById('logname');" << endl;
ostr << " l.innerHTML = '*'" << endl; ostr << " l.innerHTML = '*'" << endl;
...@@ -1544,11 +1226,7 @@ void UWebSocketGate::httpWebSocketConnectPage( ostream& ostr, ...@@ -1544,11 +1226,7 @@ void UWebSocketGate::httpWebSocketConnectPage( ostream& ostr,
ostr << " }" << endl; ostr << " }" << endl;
ostr << "function send_cmd() {" << endl; ostr << "function send_cmd() {" << endl;
<<<<<<< HEAD
ostr << " ws.send( 'set:12,32,34' );" << endl;
=======
// ostr << " ws.send( 'set:12,32,34' );" << endl; // ostr << " ws.send( 'set:12,32,34' );" << endl;
>>>>>>> 2.9.4-alt0.1
ostr << "}" << endl; ostr << "}" << endl;
ostr << "}" << endl; ostr << "}" << endl;
......
...@@ -55,21 +55,13 @@ namespace uniset ...@@ -55,21 +55,13 @@ namespace uniset
об изменнии датчиков, а так же изменять состояние (см. \ref sec_UWebSocketGate_Command). об изменнии датчиков, а так же изменять состояние (см. \ref sec_UWebSocketGate_Command).
Подключение к websocket-у доступно по адресу: Подключение к websocket-у доступно по адресу:
\code \code
<<<<<<< HEAD
ws://host:port/wsgate/?s1,s2,s3,s4&format=[json,txt,raw]
=======
ws://host:port/wsgate/ ws://host:port/wsgate/
>>>>>>> 2.9.4-alt0.1
\endcode \endcode
Помимо этого UWebSocketGate работает в режиме мониторинга изменений датчиков. Помимо этого UWebSocketGate работает в режиме мониторинга изменений датчиков.
Для этого достаточно зайти на страничку по адресу: Для этого достаточно зайти на страничку по адресу:
\code \code
<<<<<<< HEAD
http://host:port/wsgate/?s1,s2,s3,s4&format=[json,txt,raw]
=======
http://host:port/wsgate/?s1,s2,s3,s4 http://host:port/wsgate/?s1,s2,s3,s4
>>>>>>> 2.9.4-alt0.1
\endcode \endcode
\section sec_UWebSocketGate_Conf Конфигурирование UWebSocketGate \section sec_UWebSocketGate_Conf Конфигурирование UWebSocketGate
...@@ -83,9 +75,6 @@ namespace uniset ...@@ -83,9 +75,6 @@ namespace uniset
\section sec_UWebSocketGate_DETAIL UWebSocketGate: Технические детали \section sec_UWebSocketGate_DETAIL UWebSocketGate: Технические детали
Вся релизация построена на "однопоточном" eventloop. Если датчики долго не меняются, то периодически посылается "ping" сообщение. Вся релизация построена на "однопоточном" eventloop. Если датчики долго не меняются, то периодически посылается "ping" сообщение.
<<<<<<< HEAD
\section sec_UWebSocketGate_Command Команды
=======
\section sec_UWebSocketGate_Messages Сообщения \section sec_UWebSocketGate_Messages Сообщения
Общий формат сообщений Общий формат сообщений
\code \code
...@@ -169,7 +158,6 @@ namespace uniset ...@@ -169,7 +158,6 @@ namespace uniset
--prefix-ws-heartbeat-time msec --prefix-ws-heartbeat-time msec
\section sec_UWebSocketGate_Command Команды \section sec_UWebSocketGate_Command Команды
>>>>>>> 2.9.4-alt0.1
Через websocket можно посылать команды. Через websocket можно посылать команды.
На текущий момент формат команды строковый. На текущий момент формат команды строковый.
Т.е. для подачи команды, необходимо послать просто строку. Т.е. для подачи команды, необходимо послать просто строку.
...@@ -178,13 +166,7 @@ namespace uniset ...@@ -178,13 +166,7 @@ namespace uniset
- "set:id1=val1,id2=val2,name3=val4,..." - выставить значение датчиков - "set:id1=val1,id2=val2,name3=val4,..." - выставить значение датчиков
- "ask:id1,id2,name3,..." - подписаться на уведомления об изменении датчиков (sensorInfo) - "ask:id1,id2,name3,..." - подписаться на уведомления об изменении датчиков (sensorInfo)
- "del:id1,id2,name3,..." - отказаться от уведомления об изменении датчиков - "del:id1,id2,name3,..." - отказаться от уведомления об изменении датчиков
<<<<<<< HEAD
\todo Разобраться с "ping" сообщением для формата json..
\todo Настройка check_sec из командной строки и configure.xml
=======
- "get:id1,id2,name3,..." - получить текущее значение датчиков (разовое сообщение ShortSensorInfo) - "get:id1,id2,name3,..." - получить текущее значение датчиков (разовое сообщение ShortSensorInfo)
>>>>>>> 2.9.4-alt0.1
*/ */
class UWebSocketGate: class UWebSocketGate:
public UniSetObject, public UniSetObject,
...@@ -247,12 +229,8 @@ namespace uniset ...@@ -247,12 +229,8 @@ namespace uniset
void checkMessages( ev::timer& t, int revents ); void checkMessages( ev::timer& t, int revents );
virtual void sensorInfo( const uniset::SensorMessage* sm ) override; virtual void sensorInfo( const uniset::SensorMessage* sm ) override;
ev::timer iocheck; ev::timer iocheck;
<<<<<<< HEAD
double check_sec = { 0.3 };
=======
double check_sec = { 0.05 }; double check_sec = { 0.05 };
int maxMessagesProcessing = { 100 }; int maxMessagesProcessing = { 100 };
>>>>>>> 2.9.4-alt0.1
std::shared_ptr<DebugStream> mylog; std::shared_ptr<DebugStream> mylog;
...@@ -265,27 +243,9 @@ namespace uniset ...@@ -265,27 +243,9 @@ namespace uniset
double wsHeartbeatTime_sec = { 3.0 }; double wsHeartbeatTime_sec = { 3.0 };
double wsSendTime_sec = { 0.5 }; double wsSendTime_sec = { 0.5 };
size_t wsMaxSend = { 200 }; size_t wsMaxSend = { 200 };
<<<<<<< HEAD
enum class RespondFormat
{
UNKNOWN,
JSON,
TXT,
RAW
};
RespondFormat from_string( const std::string& str );
static UTCPCore::Buffer* format( const uniset::SensorMessage* sm, const std::string& err, const RespondFormat fmt );
static UTCPCore::Buffer* to_json( const uniset::SensorMessage* sm, const std::string& err );
static UTCPCore::Buffer* to_txt( const uniset::SensorMessage* sm, const std::string& err );
static UTCPCore::Buffer* to_raw( const uniset::SensorMessage* sm, const std::string& err );
=======
size_t wsMaxCmd = { 100 }; size_t wsMaxCmd = { 100 };
static Poco::JSON::Object::Ptr to_json( const uniset::SensorMessage* sm, const std::string& err ); static Poco::JSON::Object::Ptr to_json( const uniset::SensorMessage* sm, const std::string& err );
>>>>>>> 2.9.4-alt0.1
/*! класс реализует работу с websocket через eventloop /*! класс реализует работу с websocket через eventloop
* Из-за того, что поступление логов может быть достаточно быстрым * Из-за того, что поступление логов может быть достаточно быстрым
...@@ -318,13 +278,6 @@ namespace uniset ...@@ -318,13 +278,6 @@ namespace uniset
long value = { 0 }; // set value long value = { 0 }; // set value
}; };
<<<<<<< HEAD
void add( const sinfo& si );
void del( uniset::ObjectId id );
void set( uniset::ObjectId id, long value );
void sensorInfo( const uniset::SensorMessage* sm );
void doCommand( const std::shared_ptr<UInterface>& ui );
=======
void ask( uniset::ObjectId id ); void ask( uniset::ObjectId id );
void del( uniset::ObjectId id ); void del( uniset::ObjectId id );
...@@ -333,7 +286,6 @@ namespace uniset ...@@ -333,7 +286,6 @@ namespace uniset
void sensorInfo( const uniset::SensorMessage* sm ); void sensorInfo( const uniset::SensorMessage* sm );
void doCommand( const std::shared_ptr<UInterface>& ui ); void doCommand( const std::shared_ptr<UInterface>& ui );
static Poco::JSON::Object::Ptr to_short_json( sinfo* si ); static Poco::JSON::Object::Ptr to_short_json( sinfo* si );
>>>>>>> 2.9.4-alt0.1
void term(); void term();
...@@ -343,32 +295,21 @@ namespace uniset ...@@ -343,32 +295,21 @@ namespace uniset
void setHearbeatTime( const double& sec ); void setHearbeatTime( const double& sec );
void setSendPeriod( const double& sec ); void setSendPeriod( const double& sec );
void setMaxSendCount( size_t val ); void setMaxSendCount( size_t val );
<<<<<<< HEAD
void setRespondFormat( RespondFormat f );
=======
void setMaxCmdCount( size_t val ); void setMaxCmdCount( size_t val );
>>>>>>> 2.9.4-alt0.1
std::shared_ptr<DebugStream> mylog; std::shared_ptr<DebugStream> mylog;
protected: protected:
void write(); void write();
<<<<<<< HEAD
void sendError( sinfo& si, const std::string& err );
=======
void sendResponse( sinfo& si ); void sendResponse( sinfo& si );
void sendShortResponse( sinfo& si ); void sendShortResponse( sinfo& si );
>>>>>>> 2.9.4-alt0.1
void onCommand( const std::string& cmd ); void onCommand( const std::string& cmd );
ev::timer iosend; ev::timer iosend;
double send_sec = { 0.5 }; double send_sec = { 0.5 };
size_t maxsend = { 200 }; size_t maxsend = { 200 };
<<<<<<< HEAD
=======
size_t maxcmd = { 100 }; size_t maxcmd = { 100 };
>>>>>>> 2.9.4-alt0.1
ev::timer ioping; ev::timer ioping;
double ping_sec = { 3.0 }; double ping_sec = { 3.0 };
...@@ -385,25 +326,16 @@ namespace uniset ...@@ -385,25 +326,16 @@ namespace uniset
std::atomic_bool cancelled = { false }; std::atomic_bool cancelled = { false };
std::unordered_map<uniset::ObjectId, sinfo> smap; std::unordered_map<uniset::ObjectId, sinfo> smap;
<<<<<<< HEAD
RespondFormat fmt = { RespondFormat::JSON };
=======
std::queue<sinfo> qcmd; // очередь команд std::queue<sinfo> qcmd; // очередь команд
>>>>>>> 2.9.4-alt0.1
Poco::Net::HTTPServerRequest* req; Poco::Net::HTTPServerRequest* req;
Poco::Net::HTTPServerResponse* resp; Poco::Net::HTTPServerResponse* resp;
<<<<<<< HEAD
// очередь данных на посылку..
std::queue<UTCPCore::Buffer*> wbuf;
=======
// очередь json-на отправку // очередь json-на отправку
std::queue<Poco::JSON::Object::Ptr> jbuf; std::queue<Poco::JSON::Object::Ptr> jbuf;
// очередь данных на посылку.. // очередь данных на посылку..
std::queue<uniset::UTCPCore::Buffer*> wbuf; std::queue<uniset::UTCPCore::Buffer*> wbuf;
>>>>>>> 2.9.4-alt0.1
size_t maxsize; // рассчитывается сходя из max_send (см. конструктор) size_t maxsize; // рассчитывается сходя из max_send (см. конструктор)
}; };
......
...@@ -297,8 +297,6 @@ ...@@ -297,8 +297,6 @@
./extensions/UniNetwork/uninet.cc ./extensions/UniNetwork/uninet.cc
./extensions/UWebSocketGate/main.cc ./extensions/UWebSocketGate/main.cc
./extensions/UWebSocketGate/Makefile.am ./extensions/UWebSocketGate/Makefile.am
<<<<<<< HEAD
=======
./extensions/UWebSocketGate.old/main.cc ./extensions/UWebSocketGate.old/main.cc
./extensions/UWebSocketGate.old/Makefile.am ./extensions/UWebSocketGate.old/Makefile.am
./extensions/UWebSocketGate.old/UWebSocketGate.cc ./extensions/UWebSocketGate.old/UWebSocketGate.cc
...@@ -307,7 +305,6 @@ ...@@ -307,7 +305,6 @@
./extensions/UWebSocketGate/tests/Makefile.am ./extensions/UWebSocketGate/tests/Makefile.am
./extensions/UWebSocketGate/tests/tests_with_sm.cc ./extensions/UWebSocketGate/tests/tests_with_sm.cc
./extensions/UWebSocketGate/tests/test_uwebsocketgate.cc ./extensions/UWebSocketGate/tests/test_uwebsocketgate.cc
>>>>>>> 2.9.4-alt0.1
./extensions/UWebSocketGate/UWebSocketGate.cc ./extensions/UWebSocketGate/UWebSocketGate.cc
./extensions/UWebSocketGate/UWebSocketGate.h ./extensions/UWebSocketGate/UWebSocketGate.h
./extensions/UWebSocketGate/UWebSocketGateSugar.h ./extensions/UWebSocketGate/UWebSocketGateSugar.h
......
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