Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
dcdb
dcdb
Commits
82f02675
Commit
82f02675
authored
Aug 11, 2020
by
Michael Ott
Browse files
Rework loadCache() to accelerate getPublicSensorsByWildcard() calls
parent
dfe95445
Changes
2
Hide whitespace changes
Inline
Side-by-side
lib/include_internal/sensorconfig_internal.h
View file @
82f02675
...
...
@@ -49,9 +49,9 @@ protected:
Connection
*
connection
;
CassSession
*
session
;
typedef
std
::
unordered_map
<
std
::
string
,
std
::
reference_wrapper
<
PublicSensor
>
>
SensorMap_t
;
typedef
std
::
unordered_map
<
std
::
string
,
PublicSensor
>
SensorMap_t
;
SensorMap_t
sensorMapByName
;
std
::
list
<
PublicSensor
>
sensorList
;
std
::
list
<
std
::
string
>
sensorList
;
bool
validateSensorPattern
(
const
char
*
sensorPattern
);
bool
validateSensorPublicName
(
std
::
string
publicName
);
...
...
lib/src/sensorconfig.cpp
View file @
82f02675
...
...
@@ -306,17 +306,17 @@ bool SensorConfigImpl::validateSensorPublicName(std::string publicName)
SCError
SensorConfigImpl
::
loadCache
()
{
sensorList
.
clear
();
sensorMapByName
.
clear
();
SCError
rc
=
getPublicSensorsVerbose
(
sensorList
);
if
(
rc
!=
SC_OK
)
{
return
rc
;
if
(
sensorList
.
size
()
!=
0
)
{
return
SC_OK
;
}
else
{
for
(
auto
&
s
:
sensorList
)
{
sensorMapByName
.
insert
(
std
::
make_pair
(
s
.
name
,
std
::
ref
(
s
)));
}
return
SC_OK
;
#ifdef DEBUG
TimeStamp
ts
;
#endif
SCError
ret
=
getPublicSensorNames
(
sensorList
);
#ifdef DEBUG
std
::
cerr
<<
"loadCache: "
<<
sensorList
.
size
()
<<
" sensors loaded in "
<<
TimeStamp
().
getRaw
()
-
ts
.
getRaw
()
<<
" ns"
<<
std
::
endl
;
#endif
return
ret
;
}
}
...
...
@@ -1063,9 +1063,8 @@ SCError SensorConfigImpl::getPublicSensorByName(PublicSensor& sensor, const char
sensor
.
ttl
=
ttl
;
sensor
.
operations
=
operations
;
/* Add to sensorPropertyCache for later use */
sensorList
.
push_back
(
sensor
);
sensorMapByName
.
insert
(
std
::
make_pair
(
publicName
,
std
::
ref
(
sensorList
.
back
())));
/* Add to sensorMap for later use */
sensorMapByName
.
insert
(
std
::
make_pair
(
publicName
,
sensor
));
}
else
{
cass_result_free
(
result
);
...
...
@@ -1096,8 +1095,7 @@ SCError SensorConfigImpl::getPublicSensorsByWildcard(std::list<PublicSensor>& se
}
return
err
;
}
else
{
std
::
list
<
std
::
string
>
sensorNames
;
if
((
err
=
getPublicSensorNames
(
sensorNames
))
==
SC_OK
)
{
if
(
loadCache
()
==
SC_OK
)
{
std
::
string
w
(
"^"
);
while
(
*
wildcard
!=
0
)
{
switch
(
*
wildcard
)
{
...
...
@@ -1123,7 +1121,7 @@ SCError SensorConfigImpl::getPublicSensorsByWildcard(std::list<PublicSensor>& se
}
boost
::
regex
r
(
w
,
boost
::
regex
::
basic
);
for
(
auto
s
:
sensor
Names
)
{
for
(
auto
s
:
sensor
List
)
{
if
(
boost
::
regex_match
(
s
,
r
))
{
PublicSensor
ps
;
getPublicSensorByName
(
ps
,
s
.
c_str
());
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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