Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
uniset2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UniSet project repositories
uniset2
Commits
eceea3c3
Commit
eceea3c3
authored
Mar 05, 2021
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix after merge
parent
36839d01
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
0 additions
and
406 deletions
+0
-406
configure.ac
configure.ac
+0
-3
Makefile.am
extensions/Makefile.am
+0
-4
Makefile.am
extensions/UWebSocketGate/Makefile.am
+0
-6
UWebSocketGate.cc
extensions/UWebSocketGate/UWebSocketGate.cc
+0
-322
UWebSocketGate.h
extensions/UWebSocketGate/UWebSocketGate.h
+0
-68
uniset2.files
uniset2.files
+0
-3
No files found.
configure.ac
View file @
eceea3c3
...
@@ -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
...
...
extensions/Makefile.am
View file @
eceea3c3
...
@@ -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
...
...
extensions/UWebSocketGate/Makefile.am
View file @
eceea3c3
<<<<<<<
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
extensions/UWebSocketGate/UWebSocketGate.cc
View file @
eceea3c3
...
@@ -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
;
...
...
extensions/UWebSocketGate/UWebSocketGate.h
View file @
eceea3c3
...
@@ -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 (см. конструктор)
};
};
...
...
uniset2.files
View file @
eceea3c3
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment