Skip to content

Commit 892beb5

Browse files
author
Felipe Zimmerle
committed
Refactoring on {global,ip,resources,session,tx,user} collections
Now using the same name schema and interface for these "special" collection. Fix: #1754, #1778
1 parent 550e9d3 commit 892beb5

File tree

7 files changed

+66
-43
lines changed

7 files changed

+66
-43
lines changed

src/collection/backend/in_memory-per_process.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,10 @@ void InMemoryPerProcess::resolveMultiMatches(const std::string& var,
105105
l->insert(l->begin(), new VariableValue(&m_name, &i.first, &i.second));
106106
}
107107
} else {
108-
auto range = this->equal_range(var);
109-
for (auto it = range.first; it != range.second; ++it) {
110-
l->insert(l->begin(), new VariableValue(&m_name, &var, &it->second));
108+
for (auto &a : *this) {
109+
if (a.first.compare(0, var.size(), var) == 0) {
110+
l->insert(l->begin(), new VariableValue(&m_name, &var, &a.second));
111+
}
111112
}
112113
}
113114
}
@@ -116,7 +117,6 @@ void InMemoryPerProcess::resolveMultiMatches(const std::string& var,
116117
void InMemoryPerProcess::resolveRegularExpression(const std::string& var,
117118
std::vector<const VariableValue *> *l) {
118119

119-
120120
//if (var.find(":") == std::string::npos) {
121121
// return;
122122
//}

src/variables/global.h

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,15 @@ namespace Variables {
3434
class Global_DictElement : public Variable {
3535
public:
3636
explicit Global_DictElement(std::string dictElement)
37-
: Variable("GLOBAL"),
38-
m_dictElement(dictElement) { }
37+
: Variable("GLOBAL:" + dictElement),
38+
m_dictElement("GLOBAL:" + dictElement) { }
3939

4040
void evaluate(Transaction *t,
4141
Rule *rule,
4242
std::vector<const VariableValue *> *l) override {
4343
t->m_collections.m_global_collection->resolveMultiMatches(
44-
m_dictElement, t->m_collections.m_global_collection_key, l);
44+
m_name, t->m_collections.m_global_collection_key,
45+
t->m_rules->m_secWebAppId.m_value, l);
4546
}
4647

4748
std::string m_dictElement;
@@ -56,8 +57,9 @@ class Global_NoDictElement : public Variable {
5657
void evaluate(Transaction *t,
5758
Rule *rule,
5859
std::vector<const VariableValue *> *l) override {
59-
t->m_collections.m_global_collection->resolveMultiMatches(m_name,
60-
t->m_collections.m_global_collection_key, l);
60+
t->m_collections.m_global_collection->resolveMultiMatches("",
61+
t->m_collections.m_global_collection_key,
62+
t->m_rules->m_secWebAppId.m_value, l);
6163
}
6264
};
6365

@@ -73,7 +75,9 @@ class Global_DictElementRegexp : public Variable {
7375
Rule *rule,
7476
std::vector<const VariableValue *> *l) override {
7577
t->m_collections.m_global_collection->resolveRegularExpression(
76-
m_dictElement, t->m_collections.m_global_collection_key, l);
78+
m_dictElement,
79+
t->m_collections.m_global_collection_key,
80+
t->m_rules->m_secWebAppId.m_value, l);
7781
}
7882

7983
Utils::Regex m_r;
@@ -92,19 +96,24 @@ class Global_DynamicElement : public Variable {
9296
std::vector<const VariableValue *> *l) override {
9397
std::string string = m_string->evaluate(t);
9498
t->m_collections.m_global_collection->resolveMultiMatches(
95-
string, t->m_collections.m_global_collection_key, l);
99+
string,
100+
t->m_collections.m_global_collection_key,
101+
t->m_rules->m_secWebAppId.m_value, l);
96102

97103
}
98104

99105
void del(Transaction *t, std::string k) {
100106
t->m_collections.m_global_collection->del(k,
101-
t->m_collections.m_global_collection_key);
107+
t->m_collections.m_global_collection_key,
108+
t->m_rules->m_secWebAppId.m_value);
102109
}
103110

104111
void storeOrUpdateFirst(Transaction *t, std::string var,
105112
std::string value) {
106113
t->m_collections.m_global_collection->storeOrUpdateFirst(
107-
var, t->m_collections.m_global_collection_key, value);
114+
var, t->m_collections.m_global_collection_key,
115+
t->m_rules->m_secWebAppId.m_value,
116+
value);
108117
}
109118

110119
std::unique_ptr<RunTimeString> m_string;

src/variables/ip.h

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ class Ip_DictElement : public Variable {
4040
void evaluate(Transaction *t,
4141
Rule *rule,
4242
std::vector<const VariableValue *> *l) override {
43-
t->m_collections.m_ip_collection->resolveMultiMatches(m_dictElement,
44-
t->m_collections.m_ip_collection_key, l);
45-
43+
t->m_collections.m_ip_collection->resolveMultiMatches(
44+
m_name, t->m_collections.m_ip_collection_key,
45+
t->m_rules->m_secWebAppId.m_value, l);
4646
}
4747

4848
std::string m_dictElement;
@@ -57,8 +57,9 @@ class Ip_NoDictElement : public Variable {
5757
void evaluate(Transaction *t,
5858
Rule *rule,
5959
std::vector<const VariableValue *> *l) override {
60-
t->m_collections.m_ip_collection->resolveMultiMatches(m_name,
61-
t->m_collections.m_ip_collection_key, l);
60+
t->m_collections.m_ip_collection->resolveMultiMatches("",
61+
t->m_collections.m_ip_collection_key,
62+
t->m_rules->m_secWebAppId.m_value, l);
6263
}
6364
};
6465

@@ -68,13 +69,14 @@ class Ip_DictElementRegexp : public Variable {
6869
explicit Ip_DictElementRegexp(std::string dictElement)
6970
: Variable("IP:regex(" + dictElement + ")"),
7071
m_r(dictElement),
71-
m_dictElement("IP:" + dictElement) { }
72+
m_dictElement(dictElement) { }
7273

7374
void evaluate(Transaction *t,
7475
Rule *rule,
7576
std::vector<const VariableValue *> *l) override {
7677
t->m_collections.m_ip_collection->resolveRegularExpression(m_dictElement,
77-
t->m_collections.m_ip_collection_key, l);
78+
t->m_collections.m_ip_collection_key,
79+
t->m_rules->m_secWebAppId.m_value, l);
7880
}
7981

8082
Utils::Regex m_r;
@@ -92,19 +94,24 @@ class Ip_DynamicElement : public Variable {
9294
Rule *rule,
9395
std::vector<const VariableValue *> *l) override {
9496
std::string string = m_string->evaluate(t);
95-
t->m_collections.m_ip_collection->resolveMultiMatches("IP:" + string,
96-
t->m_collections.m_ip_collection_key, l);
97+
t->m_collections.m_ip_collection->resolveMultiMatches(
98+
string,
99+
t->m_collections.m_ip_collection_key,
100+
t->m_rules->m_secWebAppId.m_value, l);
97101
}
98102

99103
void del(Transaction *t, std::string k) {
100104
t->m_collections.m_ip_collection->del(k,
101-
t->m_collections.m_ip_collection_key);
105+
t->m_collections.m_ip_collection_key,
106+
t->m_rules->m_secWebAppId.m_value);
102107
}
103108

104109
void storeOrUpdateFirst(Transaction *t, std::string var,
105110
std::string value) {
106111
t->m_collections.m_ip_collection->storeOrUpdateFirst(
107-
var, t->m_collections.m_ip_collection_key, value);
112+
var, t->m_collections.m_ip_collection_key,
113+
t->m_rules->m_secWebAppId.m_value,
114+
value);
108115
}
109116

110117
std::unique_ptr<RunTimeString> m_string;

src/variables/resource.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ class Resource_DictElement : public Variable {
3535
public:
3636
explicit Resource_DictElement(std::string dictElement)
3737
: Variable("RESOURCE:" + dictElement),
38-
m_dictElement(dictElement) { }
38+
m_dictElement("RESOURCE:" + dictElement) { }
3939

4040
void evaluate(Transaction *t,
4141
Rule *rule,
4242
std::vector<const VariableValue *> *l) override {
43-
t->m_collections.m_resource_collection->resolveMultiMatches(m_dictElement,
44-
t->m_collections.m_resource_collection_key,
43+
t->m_collections.m_resource_collection->resolveMultiMatches(
44+
m_name, t->m_collections.m_resource_collection_key,
4545
t->m_rules->m_secWebAppId.m_value, l);
4646
}
4747

@@ -102,14 +102,14 @@ class Resource_DynamicElement : public Variable {
102102

103103
void del(Transaction *t, std::string k) {
104104
t->m_collections.m_resource_collection->del(k,
105-
t->m_collections.m_resource_collection_key);
105+
t->m_collections.m_resource_collection_key,
106+
t->m_rules->m_secWebAppId.m_value);
106107
}
107108

108109
void storeOrUpdateFirst(Transaction *t, std::string var,
109110
std::string value) {
110111
t->m_collections.m_resource_collection->storeOrUpdateFirst(
111-
var,
112-
t->m_collections.m_resource_collection_key,
112+
var, t->m_collections.m_resource_collection_key,
113113
t->m_rules->m_secWebAppId.m_value, value);
114114
}
115115

src/variables/session.h

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,14 @@ namespace Variables {
3434
class Session_DictElement : public Variable {
3535
public:
3636
explicit Session_DictElement(std::string dictElement)
37-
: Variable("SESSION"),
38-
m_dictElement(dictElement) { }
37+
: Variable("SESSION:" + dictElement),
38+
m_dictElement("SESSION:" + dictElement) { }
3939

4040
void evaluate(Transaction *t,
4141
Rule *rule,
4242
std::vector<const VariableValue *> *l) override {
4343
t->m_collections.m_session_collection->resolveMultiMatches(
44-
m_dictElement, t->m_collections.m_session_collection_key,
44+
m_name, t->m_collections.m_session_collection_key,
4545
t->m_rules->m_secWebAppId.m_value, l);
4646
}
4747

@@ -57,7 +57,7 @@ class Session_NoDictElement : public Variable {
5757
void evaluate(Transaction *t,
5858
Rule *rule,
5959
std::vector<const VariableValue *> *l) override {
60-
t->m_collections.m_session_collection->resolveMultiMatches(m_name,
60+
t->m_collections.m_session_collection->resolveMultiMatches("",
6161
t->m_collections.m_session_collection_key,
6262
t->m_rules->m_secWebAppId.m_value, l);
6363
}
@@ -96,18 +96,21 @@ class Session_DynamicElement : public Variable {
9696
std::string string = m_string->evaluate(t);
9797
t->m_collections.m_session_collection->resolveMultiMatches(
9898
string,
99-
t->m_collections.m_session_collection_key, l);
99+
t->m_collections.m_session_collection_key,
100+
t->m_rules->m_secWebAppId.m_value, l);
100101
}
101102

102103
void del(Transaction *t, std::string k) {
103104
t->m_collections.m_session_collection->del(k,
104-
t->m_collections.m_session_collection_key);
105+
t->m_collections.m_session_collection_key,
106+
t->m_collections.m_ip_collection_key);
105107
}
106108

107109
void storeOrUpdateFirst(Transaction *t, std::string var,
108110
std::string value) {
109111
t->m_collections.m_session_collection->storeOrUpdateFirst(
110112
var, t->m_collections.m_session_collection_key,
113+
t->m_rules->m_secWebAppId.m_value,
111114
value);
112115
}
113116

src/variables/tx.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ class Tx_DictElement : public Variable {
3535
public:
3636
explicit Tx_DictElement(std::string dictElement)
3737
: Variable("TX:" + dictElement),
38-
m_dictElement(dictElement) { }
38+
m_dictElement("TX:" + dictElement) { }
3939

4040
void evaluate(Transaction *t,
4141
Rule *rule,
4242
std::vector<const VariableValue *> *l) override {
4343
t->m_collections.m_tx_collection->resolveMultiMatches(
44-
m_dictElement, l);
44+
m_name, l);
4545
}
4646

4747
std::string m_dictElement;

src/variables/user.h

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,14 @@ namespace Variables {
3434
class User_DictElement : public Variable {
3535
public:
3636
explicit User_DictElement(std::string dictElement)
37-
: Variable("USER"),
38-
m_dictElement(dictElement) { }
37+
: Variable("USER:" + dictElement),
38+
m_dictElement("USER:" + dictElement) { }
3939

4040
void evaluate(Transaction *t,
4141
Rule *rule,
4242
std::vector<const VariableValue *> *l) override {
4343
t->m_collections.m_user_collection->resolveMultiMatches(
44-
m_dictElement, t->m_collections.m_user_collection_key,
44+
m_name, t->m_collections.m_user_collection_key,
4545
t->m_rules->m_secWebAppId.m_value, l);
4646
}
4747

@@ -95,18 +95,22 @@ class User_DynamicElement : public Variable {
9595
std::vector<const VariableValue *> *l) override {
9696
std::string string = m_string->evaluate(t);
9797
t->m_collections.m_user_collection->resolveMultiMatches(
98-
string, t->m_collections.m_user_collection_key, l);
98+
string,
99+
t->m_collections.m_user_collection_key,
100+
t->m_rules->m_secWebAppId.m_value, l);
99101
}
100102

101103
void del(Transaction *t, std::string k) {
102104
t->m_collections.m_user_collection->del(k,
103-
t->m_collections.m_user_collection_key);
105+
t->m_collections.m_user_collection_key,
106+
t->m_rules->m_secWebAppId.m_value);
104107
}
105108

106109
void storeOrUpdateFirst(Transaction *t, std::string var,
107110
std::string value) {
108111
t->m_collections.m_user_collection->storeOrUpdateFirst(
109112
var, t->m_collections.m_user_collection_key,
113+
t->m_rules->m_secWebAppId.m_value,
110114
value);
111115
}
112116

0 commit comments

Comments
 (0)