durable_rules 0.34.52 → 0.34.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/src/rules/events.c +22 -12
- data/src/rules/net.c +2 -0
- data/src/rules/rete.c +0 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a01733997ce444fcb2910a67668c5e10b8893161
|
4
|
+
data.tar.gz: 50ee1913a41d48dcd28d7315a32ef8dffa5fb075
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '077958cc68110cfa8bf9e6354019281d112f0f1ee63b8cc295b95e85af9c9ed22dba29b8c80edb866be8c3d6f37c70bd1151257f7fe492fc49a6fdd930f31574'
|
7
|
+
data.tar.gz: 87f14ddb90146ce93cfed1eaafce9bd720e650c1d121695a324010a7b3a08e28f1d1cfd843b527e0a49b96a39e6fa856d900f00aac6dbfb0803595e3d7fbb2fb
|
data/src/rules/events.c
CHANGED
@@ -981,6 +981,7 @@ static unsigned int isArrayMatch(ruleset *tree,
|
|
981
981
|
while (top) {
|
982
982
|
--top;
|
983
983
|
currentAlpha = stack[top];
|
984
|
+
// add all disjunctive nodes to stack
|
984
985
|
if (currentAlpha->nextListOffset) {
|
985
986
|
unsigned int *nextList = &tree->nextPool[currentAlpha->nextListOffset];
|
986
987
|
for (unsigned int entry = 0; nextList[entry] != 0; ++entry) {
|
@@ -1004,6 +1005,7 @@ static unsigned int isArrayMatch(ruleset *tree,
|
|
1004
1005
|
}
|
1005
1006
|
}
|
1006
1007
|
|
1008
|
+
// calculate conjunctive nodes
|
1007
1009
|
if (currentAlpha->nextOffset) {
|
1008
1010
|
unsigned int *nextHashset = &tree->nextPool[currentAlpha->nextOffset];
|
1009
1011
|
for(unsigned int propertyIndex = 0; propertyIndex < jo.propertiesLength; ++propertyIndex) {
|
@@ -1013,13 +1015,14 @@ static unsigned int isArrayMatch(ruleset *tree,
|
|
1013
1015
|
if (currentProperty->hash == hashNode->value.a.hash) {
|
1014
1016
|
unsigned char match = 0;
|
1015
1017
|
if (hashNode->value.a.operator == OP_IALL || hashNode->value.a.operator == OP_IANY) {
|
1018
|
+
// isArrayMatch finds a valid path, thus use propertyMatch
|
1016
1019
|
result = isArrayMatch(tree,
|
1017
1020
|
sid,
|
1018
1021
|
message,
|
1019
1022
|
messageObject,
|
1020
1023
|
currentProperty,
|
1021
1024
|
&hashNode->value.a,
|
1022
|
-
|
1025
|
+
propertyMatch,
|
1023
1026
|
rulesBinding);
|
1024
1027
|
} else {
|
1025
1028
|
result = isMatch(tree,
|
@@ -1030,31 +1033,34 @@ static unsigned int isArrayMatch(ruleset *tree,
|
|
1030
1033
|
&hashNode->value.a,
|
1031
1034
|
&match,
|
1032
1035
|
rulesBinding);
|
1033
|
-
}
|
1034
1036
|
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1037
|
+
if (match) {
|
1038
|
+
if (top == MAX_STACK_SIZE) {
|
1039
|
+
return ERR_MAX_STACK_SIZE;
|
1040
|
+
}
|
1038
1041
|
|
1039
|
-
|
1040
|
-
|
1041
|
-
return ERR_MAX_STACK_SIZE;
|
1042
|
+
stack[top] = &hashNode->value.a;
|
1043
|
+
++top;
|
1042
1044
|
}
|
1045
|
+
}
|
1043
1046
|
|
1044
|
-
|
1045
|
-
|
1047
|
+
if (result != RULES_OK) {
|
1048
|
+
return result;
|
1046
1049
|
}
|
1047
1050
|
}
|
1048
1051
|
}
|
1049
1052
|
}
|
1050
1053
|
}
|
1051
1054
|
|
1052
|
-
|
1055
|
+
// no next offset means we found a valid path
|
1056
|
+
if (!currentAlpha->nextOffset) {
|
1053
1057
|
*propertyMatch = 1;
|
1054
1058
|
break;
|
1055
1059
|
}
|
1056
1060
|
}
|
1057
1061
|
|
1062
|
+
// OP_IANY, one element led a a valid path
|
1063
|
+
// OP_IALL, all elements led to a valid path
|
1058
1064
|
if ((arrayAlpha->operator == OP_IALL && !*propertyMatch) ||
|
1059
1065
|
(arrayAlpha->operator == OP_IANY && *propertyMatch)) {
|
1060
1066
|
break;
|
@@ -1458,10 +1464,14 @@ static unsigned int handleMessages(ruleset *tree,
|
|
1458
1464
|
&jo,
|
1459
1465
|
&last) == RULES_OK) {
|
1460
1466
|
|
1461
|
-
while (*last != ',' && *last != '
|
1467
|
+
while (*last != ',' && *last != '\0' ) {
|
1462
1468
|
++last;
|
1463
1469
|
}
|
1464
1470
|
|
1471
|
+
if (*last == '\0') {
|
1472
|
+
--last;
|
1473
|
+
}
|
1474
|
+
|
1465
1475
|
lastTemp = *last;
|
1466
1476
|
*last = '\0';
|
1467
1477
|
result = handleMessageCore(tree,
|
data/src/rules/net.c
CHANGED
@@ -2909,6 +2909,7 @@ unsigned int startNonBlockingBatch(void *rulesBinding,
|
|
2909
2909
|
free(commands[i]);
|
2910
2910
|
}
|
2911
2911
|
|
2912
|
+
sdsfree(reContext->obuf);
|
2912
2913
|
reContext->obuf = newbuf;
|
2913
2914
|
int wdone = 0;
|
2914
2915
|
do {
|
@@ -2985,6 +2986,7 @@ unsigned int executeBatchWithReply(void *rulesBinding,
|
|
2985
2986
|
free(commands[i]);
|
2986
2987
|
}
|
2987
2988
|
|
2989
|
+
sdsfree(reContext->obuf);
|
2988
2990
|
reContext->obuf = newbuf;
|
2989
2991
|
redisReply *reply;
|
2990
2992
|
for (unsigned int i = 0; i < replyCount; ++i) {
|
data/src/rules/rete.c
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: durable_rules
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.34.
|
4
|
+
version: 0.34.53
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jesus Ruiz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-09-
|
11
|
+
date: 2018-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -44,28 +44,28 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 4.0
|
47
|
+
version: '4.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 4.0
|
54
|
+
version: '4.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: sinatra
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.4
|
61
|
+
version: '1.4'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.4
|
68
|
+
version: '1.4'
|
69
69
|
description: A lightweight library for real-time, consistent and scalable coordination
|
70
70
|
of events.
|
71
71
|
email: jr3791@live.com
|