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
06a812cf
Commit
06a812cf
authored
Nov 04, 2015
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(RRDServer): добавил проверку на максимальную разрешённоую длину имени
для dsname.
parent
3d51f988
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
8 deletions
+35
-8
libuniset2.spec
conf/libuniset2.spec
+4
-1
RRDServer.cc
extensions/RRDServer/RRDServer.cc
+23
-6
RRDServer.h
extensions/RRDServer/RRDServer.h
+8
-1
No files found.
conf/libuniset2.spec
View file @
06a812cf
...
...
@@ -13,7 +13,7 @@
Name: libuniset2
Version: 2.2
Release: alt1
0
Release: alt1
1
Summary: UniSet - library for building distributed industrial control systems
...
...
@@ -452,6 +452,9 @@ mv -f %buildroot%python_sitelibdir_noarch/* %buildroot%python_sitelibdir/%oname
# ..
%changelog
* Tue Nov 03 2015 Pavel Vainerman <pv@altlinux.ru> 2.2-alt11
- RRDServer: add support 'dsname', check RRD_MAX_DSNAME_LEN
* Fri Oct 30 2015 Pavel Vainerman <pv@altlinux.ru> 2.2-alt10
- fixes after coverity scan..
- minor fixes
...
...
extensions/RRDServer/RRDServer.cc
View file @
06a812cf
...
...
@@ -58,8 +58,13 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
string
fv
(
it
.
getProp
(
"filter_value"
)
);
string
cf
(
it
.
getProp
(
"ds_field"
)
);
string
ds
(
cf
+
"_dsname"
);
if
(
cf
.
empty
()
)
{
cf
=
ff
+
fv
+
"_ds"
;
ds
=
ff
+
fv
+
"_dsname"
;
}
int
rrdstep
=
it
.
getPIntProp
(
"step"
,
5
);
int
lastup
=
it
.
getPIntProp
(
"lastup"
,
0
);
...
...
@@ -79,7 +84,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream
err
;
err
<<
myname
<<
"(init): rrd='"
<<
fname
<<
"' Unknown RRA list"
;
mycrit
<<
err
.
str
();
mycrit
<<
err
.
str
()
<<
endl
;
throw
SystemError
(
err
.
str
());
}
...
...
@@ -91,7 +96,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream
err
;
err
<<
myname
<<
"(init): rrd='"
<<
fname
<<
"' Unkown RRA item.. <item rra='...'"
;
mycrit
<<
err
.
str
();
mycrit
<<
err
.
str
()
<<
endl
;
throw
SystemError
(
err
.
str
());
}
...
...
@@ -116,7 +121,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream
err
;
err
<<
myname
<<
"(init): Not found section <sensors>"
;
mycrit
<<
err
.
str
();
mycrit
<<
err
.
str
()
<<
endl
;
throw
SystemError
(
err
.
str
());
}
...
...
@@ -126,7 +131,7 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream
err
;
err
<<
myname
<<
"(init): section <sensors> empty?!"
;
mycrit
<<
err
.
str
();
mycrit
<<
err
.
str
()
<<
endl
;
throw
SystemError
(
err
.
str
());
}
...
...
@@ -146,11 +151,23 @@ void RRDServer::initRRD( xmlNode* cnode, int tmID )
{
ostringstream
err
;
err
<<
myname
<<
"(init): Unknown create parameters ('"
<<
cf
<<
"')"
;
mycrit
<<
err
.
str
();
mycrit
<<
err
.
str
()
<<
endl
;
throw
SystemError
(
err
.
str
());
}
std
::
string
dsname
(
it1
.
getProp
(
ds
));
if
(
dsname
.
empty
()
)
dsname
=
it1
.
getProp
(
"name"
);
if
(
dsname
.
size
()
>
RRD_MAX_DSNAME_LEN
)
{
ostringstream
err
;
err
<<
myname
<<
"(init): DSNAME="
<<
dsname
<<
"("
<<
dsname
.
size
()
<<
") > RRD_MAX_NAME_SIZE("
<<
RRD_MAX_DSNAME_LEN
<<
")"
;
mycrit
<<
err
.
str
()
<<
endl
;
throw
SystemError
(
err
.
str
());
}
std
::
string
dsname
(
it1
.
getProp
(
"name"
));
ostringstream
nm
;
nm
<<
"DS:"
<<
dsname
<<
":"
<<
a
;
dslist
.
push_back
(
nm
.
str
());
...
...
extensions/RRDServer/RRDServer.h
View file @
06a812cf
...
...
@@ -13,6 +13,7 @@
- \ref sec_RRD_Comm
- \ref sec_RRD_Conf
- \ref sec_RRD_DSName
\section sec_RRD_Comm Общее описание RRDServer
...
...
@@ -51,10 +52,14 @@
<item id="54" iotype="AI" name="AI54_S" textname="AI sensor 54" rrd="1" rrd1_ds="GAUGE:20:U:U"/>
<item id="55" iotype="AI" name="AI55_S" textname="AI sensor 55" rrd="1" rrd1_ds="GAUGE:20:U:U"/>
<item id="56" iotype="AI" name="AI56_S" textname="AI sensor 56" rrd="2" rrd2_ds="COUNTER:20:U:U"/>
<item id="57" iotype="AI" name="AI57_S"
textname="AI sensor 57" rrd="2" rrd2_ds="DERIVE:20:U:U"/>
<item id="57" iotype="AI" name="AI57_S" rrd2_dsname='A57MyRRDName'
textname="AI sensor 57" rrd="2" rrd2_ds="DERIVE:20:U:U"/>
...
</sensors>
\endcode
\section sec_RRD_DSName Именование параметров
По умолчанию в качестве имени параметра берётся поле \b 'ds_field'_dsname='', если это поле не указано, то берётся \b name датчика.
\warning Имя не может превышать RRDServer::RRD_MAX_DSNAME_LEN.
*/
class
RRDServer
:
public
UObject_SK
...
...
@@ -81,6 +86,8 @@ class RRDServer:
return
mylog
;
}
const
size_t
RRD_MAX_DSNAME_LEN
=
19
;
/*!< максимальная длинна имени в RRD */
protected
:
RRDServer
();
...
...
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