durable_rules 2.0.13 → 2.0.14
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 +34 -15
- data/src/rules/rete.c +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b3f86141fd9b53867edf211a1008b807d522d54
|
4
|
+
data.tar.gz: 91b6255fae95cd1d9a6648a23dba0d8b72a0fa40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9219d3e769d17aa93866cfb2ce6e30b4d4c0117637b7c50cd1ff6e424f394d74aeeec5b60f89c53166591c63d7314907951b110a1aa973f2ae787d95054513e6
|
7
|
+
data.tar.gz: 316489bd3dfd55dcec01b39a121e9bf9fad2c3d2e5330ba76489095898eae6f5fe96e8d053f00eaa8673c1afb77bffcc0c3b924880893e863f25354c5bd718eb
|
data/src/rules/events.c
CHANGED
@@ -64,7 +64,8 @@ static unsigned int handleMessage(ruleset *tree,
|
|
64
64
|
static unsigned int reduceExpression(ruleset *tree,
|
65
65
|
stateNode *state,
|
66
66
|
expression *currentExpression,
|
67
|
-
jsonObject *
|
67
|
+
jsonObject *leftMessageObject,
|
68
|
+
jsonObject *rightMessageObject,
|
68
69
|
leftFrameNode *context,
|
69
70
|
jsonProperty *targetProperty);
|
70
71
|
|
@@ -272,6 +273,7 @@ static unsigned int reduceOperand(ruleset *tree,
|
|
272
273
|
state,
|
273
274
|
currentExpression,
|
274
275
|
messageObject,
|
276
|
+
messageObject,
|
275
277
|
context,
|
276
278
|
*targetProperty);
|
277
279
|
}
|
@@ -467,7 +469,8 @@ static unsigned int reduceProperties(unsigned char operator,
|
|
467
469
|
static unsigned int reduceExpression(ruleset *tree,
|
468
470
|
stateNode *state,
|
469
471
|
expression *currentExpression,
|
470
|
-
jsonObject *
|
472
|
+
jsonObject *leftMessageObject,
|
473
|
+
jsonObject *rightMessageObject,
|
471
474
|
leftFrameNode *context,
|
472
475
|
jsonProperty *targetProperty) {
|
473
476
|
jsonProperty leftValue;
|
@@ -475,7 +478,7 @@ static unsigned int reduceExpression(ruleset *tree,
|
|
475
478
|
CHECK_RESULT(reduceOperand(tree,
|
476
479
|
state,
|
477
480
|
¤tExpression->left,
|
478
|
-
|
481
|
+
leftMessageObject,
|
479
482
|
context,
|
480
483
|
&leftProperty));
|
481
484
|
|
@@ -496,7 +499,7 @@ static unsigned int reduceExpression(ruleset *tree,
|
|
496
499
|
CHECK_RESULT(reduceOperand(tree,
|
497
500
|
state,
|
498
501
|
¤tExpression->right,
|
499
|
-
|
502
|
+
rightMessageObject,
|
500
503
|
context,
|
501
504
|
&rightProperty));
|
502
505
|
|
@@ -562,6 +565,7 @@ static unsigned int reduceExpressionSequence(ruleset *tree,
|
|
562
565
|
state,
|
563
566
|
currentExpression,
|
564
567
|
messageObject,
|
568
|
+
messageObject,
|
565
569
|
context,
|
566
570
|
targetProperty));
|
567
571
|
if (targetProperty->type != JSON_BOOL) {
|
@@ -714,7 +718,8 @@ static unsigned int isBetaMatch(ruleset *tree,
|
|
714
718
|
|
715
719
|
static unsigned int isAlphaMatch(ruleset *tree,
|
716
720
|
alpha *currentAlpha,
|
717
|
-
jsonObject *
|
721
|
+
jsonObject *leftMessageObject,
|
722
|
+
jsonObject *rightMessageObject,
|
718
723
|
unsigned char *propertyMatch) {
|
719
724
|
*propertyMatch = 0;
|
720
725
|
if (currentAlpha->expression.operator == OP_EX) {
|
@@ -724,7 +729,8 @@ static unsigned int isAlphaMatch(ruleset *tree,
|
|
724
729
|
unsigned int result = reduceExpression(tree,
|
725
730
|
NULL,
|
726
731
|
¤tAlpha->expression,
|
727
|
-
|
732
|
+
leftMessageObject,
|
733
|
+
rightMessageObject,
|
728
734
|
NULL,
|
729
735
|
&resultProperty);
|
730
736
|
|
@@ -1417,13 +1423,15 @@ static unsigned int handleBetaMessage(ruleset *tree,
|
|
1417
1423
|
}
|
1418
1424
|
|
1419
1425
|
static unsigned int isArrayMatch(ruleset *tree,
|
1426
|
+
jsonObject *currentObject,
|
1420
1427
|
jsonObject *messageObject,
|
1421
1428
|
jsonProperty *currentProperty,
|
1422
1429
|
alpha *arrayAlpha,
|
1423
1430
|
unsigned char *propertyMatch);
|
1424
1431
|
|
1425
1432
|
static unsigned int isNextMatch(ruleset *tree,
|
1426
|
-
jsonObject *
|
1433
|
+
jsonObject *currentObject,
|
1434
|
+
jsonObject *messageObject,
|
1427
1435
|
alpha *currentAlpha,
|
1428
1436
|
unsigned char *propertyMatch) {
|
1429
1437
|
*propertyMatch = 0;
|
@@ -1432,12 +1440,13 @@ static unsigned int isNextMatch(ruleset *tree,
|
|
1432
1440
|
for (unsigned int entry = 0; nextList[entry] != 0; ++entry) {
|
1433
1441
|
node *listNode = &tree->nodePool[nextList[entry]];
|
1434
1442
|
jsonProperty *currentProperty;
|
1435
|
-
unsigned int aresult = getObjectProperty(
|
1443
|
+
unsigned int aresult = getObjectProperty(currentObject, listNode->value.a.expression.left.value.id.propertyNameHash, ¤tProperty);
|
1436
1444
|
if (aresult == ERR_PROPERTY_NOT_FOUND) {
|
1437
1445
|
*propertyMatch = 1;
|
1438
1446
|
if (listNode->value.a.nextOffset || listNode->value.a.nextListOffset) {
|
1439
1447
|
CHECK_RESULT(isNextMatch(tree,
|
1440
|
-
|
1448
|
+
currentObject,
|
1449
|
+
messageObject,
|
1441
1450
|
&listNode->value.a,
|
1442
1451
|
propertyMatch));
|
1443
1452
|
}
|
@@ -1452,27 +1461,30 @@ static unsigned int isNextMatch(ruleset *tree,
|
|
1452
1461
|
|
1453
1462
|
if (currentAlpha->nextOffset) {
|
1454
1463
|
unsigned int *nextHashset = &tree->nextPool[currentAlpha->nextOffset];
|
1455
|
-
for(unsigned int propertyIndex = 0; propertyIndex <
|
1456
|
-
jsonProperty *currentProperty = &
|
1464
|
+
for(unsigned int propertyIndex = 0; propertyIndex < currentObject->propertiesLength; ++propertyIndex) {
|
1465
|
+
jsonProperty *currentProperty = ¤tObject->properties[propertyIndex];
|
1457
1466
|
for (unsigned int entry = currentProperty->hash & HASH_MASK; nextHashset[entry] != 0; entry = (entry + 1) % NEXT_BUCKET_LENGTH) {
|
1458
1467
|
node *hashNode = &tree->nodePool[nextHashset[entry]];
|
1459
1468
|
if (currentProperty->hash == hashNode->value.a.expression.left.value.id.propertyNameHash) {
|
1460
1469
|
if (hashNode->value.a.expression.operator == OP_IALL || hashNode->value.a.expression.operator == OP_IANY) {
|
1461
1470
|
CHECK_RESULT(isArrayMatch(tree,
|
1462
|
-
|
1471
|
+
currentObject,
|
1472
|
+
messageObject,
|
1463
1473
|
currentProperty,
|
1464
1474
|
&hashNode->value.a,
|
1465
1475
|
propertyMatch));
|
1466
1476
|
} else {
|
1467
1477
|
CHECK_RESULT(isAlphaMatch(tree,
|
1468
1478
|
&hashNode->value.a,
|
1469
|
-
|
1479
|
+
currentObject,
|
1480
|
+
messageObject,
|
1470
1481
|
propertyMatch));
|
1471
1482
|
}
|
1472
1483
|
|
1473
1484
|
if (*propertyMatch && (hashNode->value.a.nextOffset || hashNode->value.a.nextListOffset)) {
|
1474
1485
|
CHECK_RESULT(isNextMatch(tree,
|
1475
|
-
|
1486
|
+
currentObject,
|
1487
|
+
messageObject,
|
1476
1488
|
&hashNode->value.a,
|
1477
1489
|
propertyMatch));
|
1478
1490
|
|
@@ -1490,6 +1502,7 @@ static unsigned int isNextMatch(ruleset *tree,
|
|
1490
1502
|
}
|
1491
1503
|
|
1492
1504
|
static unsigned int isArrayMatch(ruleset *tree,
|
1505
|
+
jsonObject *currentObject,
|
1493
1506
|
jsonObject *messageObject,
|
1494
1507
|
jsonProperty *currentProperty,
|
1495
1508
|
alpha *arrayAlpha,
|
@@ -1500,7 +1513,7 @@ static unsigned int isArrayMatch(ruleset *tree,
|
|
1500
1513
|
return RULES_OK;
|
1501
1514
|
}
|
1502
1515
|
|
1503
|
-
char *first =
|
1516
|
+
char *first = currentObject->content + currentProperty->valueOffset;
|
1504
1517
|
char *last;
|
1505
1518
|
unsigned char type;
|
1506
1519
|
jsonObject jo;
|
@@ -1543,6 +1556,7 @@ static unsigned int isArrayMatch(ruleset *tree,
|
|
1543
1556
|
if (listNode->value.a.nextOffset || listNode->value.a.nextListOffset) {
|
1544
1557
|
CHECK_RESULT(isNextMatch(tree,
|
1545
1558
|
&jo,
|
1559
|
+
messageObject,
|
1546
1560
|
&listNode->value.a,
|
1547
1561
|
propertyMatch));
|
1548
1562
|
}
|
@@ -1565,6 +1579,7 @@ static unsigned int isArrayMatch(ruleset *tree,
|
|
1565
1579
|
if (hashNode->value.a.expression.operator == OP_IALL || hashNode->value.a.expression.operator == OP_IANY) {
|
1566
1580
|
CHECK_RESULT(isArrayMatch(tree,
|
1567
1581
|
&jo,
|
1582
|
+
messageObject,
|
1568
1583
|
currentProperty,
|
1569
1584
|
&hashNode->value.a,
|
1570
1585
|
propertyMatch));
|
@@ -1572,12 +1587,14 @@ static unsigned int isArrayMatch(ruleset *tree,
|
|
1572
1587
|
CHECK_RESULT(isAlphaMatch(tree,
|
1573
1588
|
&hashNode->value.a,
|
1574
1589
|
&jo,
|
1590
|
+
messageObject,
|
1575
1591
|
propertyMatch));
|
1576
1592
|
}
|
1577
1593
|
|
1578
1594
|
if (*propertyMatch && (hashNode->value.a.nextOffset || hashNode->value.a.nextListOffset)) {
|
1579
1595
|
CHECK_RESULT(isNextMatch(tree,
|
1580
1596
|
&jo,
|
1597
|
+
messageObject,
|
1581
1598
|
&hashNode->value.a,
|
1582
1599
|
propertyMatch));
|
1583
1600
|
|
@@ -1662,6 +1679,7 @@ static unsigned int handleAlpha(ruleset *tree,
|
|
1662
1679
|
unsigned char match = 0;
|
1663
1680
|
if (hashNode->value.a.expression.operator == OP_IALL || hashNode->value.a.expression.operator == OP_IANY) {
|
1664
1681
|
CHECK_RESULT(isArrayMatch(tree,
|
1682
|
+
jo,
|
1665
1683
|
jo,
|
1666
1684
|
currentProperty,
|
1667
1685
|
&hashNode->value.a,
|
@@ -1669,6 +1687,7 @@ static unsigned int handleAlpha(ruleset *tree,
|
|
1669
1687
|
} else {
|
1670
1688
|
CHECK_RESULT(isAlphaMatch(tree,
|
1671
1689
|
&hashNode->value.a,
|
1690
|
+
jo,
|
1672
1691
|
jo,
|
1673
1692
|
&match));
|
1674
1693
|
}
|
data/src/rules/rete.c
CHANGED
@@ -910,7 +910,7 @@ static unsigned int readExpression(ruleset *tree, char *rule, unsigned char *exp
|
|
910
910
|
&newExpression,
|
911
911
|
expressionOffset));
|
912
912
|
|
913
|
-
*expressionType =
|
913
|
+
*expressionType = 0;
|
914
914
|
newExpression->operator = operator;
|
915
915
|
CHECK_PARSE_RESULT(readNextValue(last,
|
916
916
|
&first,
|
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: 2.0.
|
4
|
+
version: 2.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jesus Ruiz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|