durable_rules 0.34.47 → 0.34.48
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 +128 -62
- data/src/rules/net.c +4 -2
- data/src/rules/rete.c +22 -9
- data/src/rules/rules.h +80 -31
- data/src/rules/state.c +17 -11
- data/src/rules/state.h +1 -1
- data/src/rulesrb/rules.c +31 -31
- 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: 48d84abbe4090ab34d7cdc91409cf4d8051afce1
|
4
|
+
data.tar.gz: 196e6c8eb885f12d46a32deaaf6d6d0161e6ec44
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 109df08236d6b157e1f631ea502960ae5205ecdeef2a7bb55769978bbd7b62f1b4988e5154b602f6a2ac125c2927956bf39e3bce48add692549d4fc58b7a6e5c
|
7
|
+
data.tar.gz: 8971e18c1d4b4a479e29712db7fa3fec15de5df1c511aa7bf705fcf6da0e10d1a5ecf9b0a705b15cd92bdb8501b31b66888702ba68980a82278ea3902cfa5f98
|
data/src/rules/events.c
CHANGED
@@ -1430,7 +1430,7 @@ static unsigned int handleMessage(ruleset *tree,
|
|
1430
1430
|
rulesBinding);
|
1431
1431
|
}
|
1432
1432
|
|
1433
|
-
static unsigned int handleMessages(
|
1433
|
+
static unsigned int handleMessages(ruleset *tree,
|
1434
1434
|
unsigned char actionType,
|
1435
1435
|
char *messages,
|
1436
1436
|
char **commands,
|
@@ -1464,7 +1464,7 @@ static unsigned int handleMessages(void *handle,
|
|
1464
1464
|
|
1465
1465
|
lastTemp = *last;
|
1466
1466
|
*last = '\0';
|
1467
|
-
result = handleMessageCore(
|
1467
|
+
result = handleMessageCore(tree,
|
1468
1468
|
NULL,
|
1469
1469
|
first,
|
1470
1470
|
&jo,
|
@@ -1528,12 +1528,12 @@ static unsigned int handleState(ruleset *tree,
|
|
1528
1528
|
return result;
|
1529
1529
|
}
|
1530
1530
|
|
1531
|
-
static unsigned int handleTimers(
|
1531
|
+
static unsigned int handleTimers(ruleset *tree,
|
1532
1532
|
char **commands,
|
1533
1533
|
unsigned int *commandCount,
|
1534
1534
|
void **rulesBinding) {
|
1535
1535
|
redisReply *reply;
|
1536
|
-
unsigned int result = peekTimers(
|
1536
|
+
unsigned int result = peekTimers(tree, rulesBinding, &reply);
|
1537
1537
|
if (result != RULES_OK) {
|
1538
1538
|
return result;
|
1539
1539
|
}
|
@@ -1565,7 +1565,7 @@ static unsigned int handleTimers(void *handle,
|
|
1565
1565
|
|
1566
1566
|
commands[*commandCount] = command;
|
1567
1567
|
++*commandCount;
|
1568
|
-
result = handleMessage(
|
1568
|
+
result = handleMessage(tree,
|
1569
1569
|
NULL,
|
1570
1570
|
reply->element[i]->str + 2,
|
1571
1571
|
action,
|
@@ -1582,14 +1582,14 @@ static unsigned int handleTimers(void *handle,
|
|
1582
1582
|
return RULES_OK;
|
1583
1583
|
}
|
1584
1584
|
|
1585
|
-
static unsigned int startHandleMessage(
|
1585
|
+
static unsigned int startHandleMessage(ruleset *tree,
|
1586
1586
|
char *message,
|
1587
1587
|
unsigned char actionType,
|
1588
1588
|
void **rulesBinding,
|
1589
1589
|
unsigned int *replyCount) {
|
1590
1590
|
char *commands[MAX_COMMAND_COUNT];
|
1591
1591
|
unsigned int commandCount = 0;
|
1592
|
-
unsigned int result = handleMessage(
|
1592
|
+
unsigned int result = handleMessage(tree,
|
1593
1593
|
NULL,
|
1594
1594
|
message,
|
1595
1595
|
actionType,
|
@@ -1609,13 +1609,13 @@ static unsigned int startHandleMessage(void *handle,
|
|
1609
1609
|
return result;
|
1610
1610
|
}
|
1611
1611
|
|
1612
|
-
static unsigned int executeHandleMessage(
|
1612
|
+
static unsigned int executeHandleMessage(ruleset *tree,
|
1613
1613
|
char *message,
|
1614
1614
|
unsigned char actionType) {
|
1615
1615
|
char *commands[MAX_COMMAND_COUNT];
|
1616
1616
|
unsigned int commandCount = 0;
|
1617
1617
|
void *rulesBinding = NULL;
|
1618
|
-
unsigned int result = handleMessage(
|
1618
|
+
unsigned int result = handleMessage(tree,
|
1619
1619
|
NULL,
|
1620
1620
|
message,
|
1621
1621
|
actionType,
|
@@ -1635,14 +1635,14 @@ static unsigned int executeHandleMessage(void *handle,
|
|
1635
1635
|
return result;
|
1636
1636
|
}
|
1637
1637
|
|
1638
|
-
static unsigned int startHandleMessages(
|
1638
|
+
static unsigned int startHandleMessages(ruleset *tree,
|
1639
1639
|
char *messages,
|
1640
1640
|
unsigned char actionType,
|
1641
1641
|
void **rulesBinding,
|
1642
1642
|
unsigned int *replyCount) {
|
1643
1643
|
char *commands[MAX_COMMAND_COUNT];
|
1644
1644
|
unsigned int commandCount = 0;
|
1645
|
-
unsigned int result = handleMessages(
|
1645
|
+
unsigned int result = handleMessages(tree,
|
1646
1646
|
actionType,
|
1647
1647
|
messages,
|
1648
1648
|
commands,
|
@@ -1661,13 +1661,13 @@ static unsigned int startHandleMessages(void *handle,
|
|
1661
1661
|
return result;
|
1662
1662
|
}
|
1663
1663
|
|
1664
|
-
static unsigned int executeHandleMessages(
|
1664
|
+
static unsigned int executeHandleMessages(ruleset *tree,
|
1665
1665
|
char *messages,
|
1666
1666
|
unsigned char actionType) {
|
1667
1667
|
char *commands[MAX_COMMAND_COUNT];
|
1668
1668
|
unsigned int commandCount = 0;
|
1669
1669
|
void *rulesBinding = NULL;
|
1670
|
-
unsigned int result = handleMessages(
|
1670
|
+
unsigned int result = handleMessages(tree,
|
1671
1671
|
actionType,
|
1672
1672
|
messages,
|
1673
1673
|
commands,
|
@@ -1695,85 +1695,127 @@ unsigned int complete(void *rulesBinding, unsigned int replyCount) {
|
|
1695
1695
|
return RULES_OK;
|
1696
1696
|
}
|
1697
1697
|
|
1698
|
-
unsigned int assertEvent(
|
1699
|
-
|
1698
|
+
unsigned int assertEvent(unsigned int handle, char *message) {
|
1699
|
+
ruleset *tree;
|
1700
|
+
RESOLVE_HANDLE(handle, &tree);
|
1701
|
+
|
1702
|
+
return executeHandleMessage(tree, message, ACTION_ASSERT_EVENT);
|
1700
1703
|
}
|
1701
1704
|
|
1702
|
-
unsigned int startAssertEvent(
|
1705
|
+
unsigned int startAssertEvent(unsigned int handle,
|
1703
1706
|
char *message,
|
1704
1707
|
void **rulesBinding,
|
1705
1708
|
unsigned int *replyCount) {
|
1706
|
-
|
1709
|
+
ruleset *tree;
|
1710
|
+
RESOLVE_HANDLE(handle, &tree);
|
1711
|
+
|
1712
|
+
return startHandleMessage(tree, message, ACTION_ASSERT_EVENT, rulesBinding, replyCount);
|
1707
1713
|
}
|
1708
1714
|
|
1709
|
-
unsigned int assertEvents(
|
1715
|
+
unsigned int assertEvents(unsigned int handle,
|
1710
1716
|
char *messages) {
|
1711
|
-
|
1717
|
+
ruleset *tree;
|
1718
|
+
RESOLVE_HANDLE(handle, &tree);
|
1719
|
+
|
1720
|
+
return executeHandleMessages(tree, messages, ACTION_ASSERT_EVENT);
|
1712
1721
|
}
|
1713
1722
|
|
1714
|
-
unsigned int startAssertEvents(
|
1723
|
+
unsigned int startAssertEvents(unsigned int handle,
|
1715
1724
|
char *messages,
|
1716
1725
|
void **rulesBinding,
|
1717
1726
|
unsigned int *replyCount) {
|
1718
|
-
|
1727
|
+
ruleset *tree;
|
1728
|
+
RESOLVE_HANDLE(handle, &tree);
|
1729
|
+
|
1730
|
+
return startHandleMessages(tree, messages, ACTION_ASSERT_EVENT, rulesBinding, replyCount);
|
1719
1731
|
}
|
1720
1732
|
|
1721
|
-
unsigned int retractEvent(
|
1722
|
-
|
1733
|
+
unsigned int retractEvent(unsigned int handle, char *message) {
|
1734
|
+
ruleset *tree;
|
1735
|
+
RESOLVE_HANDLE(handle, &tree);
|
1736
|
+
|
1737
|
+
return executeHandleMessage(tree, message, ACTION_REMOVE_EVENT);
|
1723
1738
|
}
|
1724
1739
|
|
1725
|
-
unsigned int startAssertFact(
|
1740
|
+
unsigned int startAssertFact(unsigned int handle,
|
1726
1741
|
char *message,
|
1727
1742
|
void **rulesBinding,
|
1728
1743
|
unsigned int *replyCount) {
|
1729
|
-
|
1744
|
+
ruleset *tree;
|
1745
|
+
RESOLVE_HANDLE(handle, &tree);
|
1746
|
+
|
1747
|
+
return startHandleMessage(tree, message, ACTION_ASSERT_FACT, rulesBinding, replyCount);
|
1730
1748
|
}
|
1731
1749
|
|
1732
|
-
unsigned int assertFact(
|
1733
|
-
|
1750
|
+
unsigned int assertFact(unsigned int handle, char *message) {
|
1751
|
+
ruleset *tree;
|
1752
|
+
RESOLVE_HANDLE(handle, &tree);
|
1753
|
+
|
1754
|
+
return executeHandleMessage(tree, message, ACTION_ASSERT_FACT);
|
1734
1755
|
}
|
1735
1756
|
|
1736
|
-
unsigned int startAssertFacts(
|
1757
|
+
unsigned int startAssertFacts(unsigned int handle,
|
1737
1758
|
char *messages,
|
1738
|
-
|
1739
|
-
|
1740
|
-
|
1759
|
+
void **rulesBinding,
|
1760
|
+
unsigned int *replyCount) {
|
1761
|
+
ruleset *tree;
|
1762
|
+
RESOLVE_HANDLE(handle, &tree);
|
1763
|
+
|
1764
|
+
return startHandleMessages(tree, messages, ACTION_ASSERT_FACT, rulesBinding, replyCount);
|
1741
1765
|
}
|
1742
1766
|
|
1743
|
-
unsigned int assertFacts(
|
1744
|
-
|
1745
|
-
|
1767
|
+
unsigned int assertFacts(unsigned int handle,
|
1768
|
+
char *messages) {
|
1769
|
+
ruleset *tree;
|
1770
|
+
RESOLVE_HANDLE(handle, &tree);
|
1771
|
+
|
1772
|
+
return executeHandleMessages(tree, messages, ACTION_ASSERT_FACT);
|
1746
1773
|
}
|
1747
1774
|
|
1748
|
-
unsigned int retractFact(
|
1749
|
-
|
1775
|
+
unsigned int retractFact(unsigned int handle, char *message) {
|
1776
|
+
ruleset *tree;
|
1777
|
+
RESOLVE_HANDLE(handle, &tree);
|
1778
|
+
|
1779
|
+
return executeHandleMessage(tree, message, ACTION_REMOVE_FACT);
|
1750
1780
|
}
|
1751
1781
|
|
1752
|
-
unsigned int startRetractFact(
|
1782
|
+
unsigned int startRetractFact(unsigned int handle,
|
1753
1783
|
char *message,
|
1754
1784
|
void **rulesBinding,
|
1755
1785
|
unsigned int *replyCount) {
|
1756
|
-
|
1786
|
+
ruleset *tree;
|
1787
|
+
RESOLVE_HANDLE(handle, &tree);
|
1788
|
+
|
1789
|
+
return startHandleMessage(tree, message, ACTION_REMOVE_FACT, rulesBinding, replyCount);
|
1757
1790
|
}
|
1758
1791
|
|
1759
|
-
unsigned int retractFacts(
|
1792
|
+
unsigned int retractFacts(unsigned int handle,
|
1760
1793
|
char *messages) {
|
1761
|
-
|
1794
|
+
ruleset *tree;
|
1795
|
+
RESOLVE_HANDLE(handle, &tree);
|
1796
|
+
|
1797
|
+
return executeHandleMessages(tree, messages, ACTION_REMOVE_FACT);
|
1762
1798
|
}
|
1763
1799
|
|
1764
|
-
unsigned int startRetractFacts(
|
1800
|
+
unsigned int startRetractFacts(unsigned int handle,
|
1765
1801
|
char *messages,
|
1766
1802
|
void **rulesBinding,
|
1767
1803
|
unsigned int *replyCount) {
|
1768
|
-
|
1804
|
+
ruleset *tree;
|
1805
|
+
RESOLVE_HANDLE(handle, &tree);
|
1806
|
+
|
1807
|
+
return startHandleMessages(tree, messages, ACTION_REMOVE_FACT, rulesBinding, replyCount);
|
1769
1808
|
}
|
1770
1809
|
|
1771
|
-
unsigned int assertState(
|
1810
|
+
unsigned int assertState(unsigned int handle, char *sid, char *state) {
|
1811
|
+
ruleset *tree;
|
1812
|
+
RESOLVE_HANDLE(handle, &tree);
|
1813
|
+
|
1772
1814
|
char *commands[MAX_COMMAND_COUNT];
|
1773
1815
|
unsigned int commandCount = 0;
|
1774
1816
|
void *rulesBinding = NULL;
|
1775
1817
|
|
1776
|
-
unsigned int result = handleState(
|
1818
|
+
unsigned int result = handleState(tree,
|
1777
1819
|
state,
|
1778
1820
|
commands,
|
1779
1821
|
&commandCount,
|
@@ -1791,11 +1833,14 @@ unsigned int assertState(void *handle, char *sid, char *state) {
|
|
1791
1833
|
return result;
|
1792
1834
|
}
|
1793
1835
|
|
1794
|
-
unsigned int assertTimers(
|
1836
|
+
unsigned int assertTimers(unsigned int handle) {
|
1837
|
+
ruleset *tree;
|
1838
|
+
RESOLVE_HANDLE(handle, &tree);
|
1839
|
+
|
1795
1840
|
char *commands[MAX_COMMAND_COUNT];
|
1796
1841
|
unsigned int commandCount = 0;
|
1797
1842
|
void *rulesBinding = NULL;
|
1798
|
-
unsigned int result = handleTimers(
|
1843
|
+
unsigned int result = handleTimers(tree,
|
1799
1844
|
commands,
|
1800
1845
|
&commandCount,
|
1801
1846
|
&rulesBinding);
|
@@ -1812,14 +1857,17 @@ unsigned int assertTimers(void *handle) {
|
|
1812
1857
|
return RULES_OK;
|
1813
1858
|
}
|
1814
1859
|
|
1815
|
-
unsigned int startAction(
|
1860
|
+
unsigned int startAction(unsigned int handle,
|
1816
1861
|
char **state,
|
1817
1862
|
char **messages,
|
1818
1863
|
void **actionHandle,
|
1819
1864
|
void **actionBinding) {
|
1865
|
+
ruleset *tree;
|
1866
|
+
RESOLVE_HANDLE(handle, &tree);
|
1867
|
+
|
1820
1868
|
redisReply *reply;
|
1821
1869
|
void *rulesBinding;
|
1822
|
-
unsigned int result = peekAction(
|
1870
|
+
unsigned int result = peekAction(tree, &rulesBinding, &reply);
|
1823
1871
|
if (result != RULES_OK) {
|
1824
1872
|
return result;
|
1825
1873
|
}
|
@@ -1838,15 +1886,18 @@ unsigned int startAction(void *handle,
|
|
1838
1886
|
return RULES_OK;
|
1839
1887
|
}
|
1840
1888
|
|
1841
|
-
unsigned int startUpdateState(
|
1889
|
+
unsigned int startUpdateState(unsigned int handle,
|
1842
1890
|
void *actionHandle,
|
1843
1891
|
char *state,
|
1844
1892
|
void **rulesBinding,
|
1845
1893
|
unsigned int *replyCount) {
|
1894
|
+
ruleset *tree;
|
1895
|
+
RESOLVE_HANDLE(handle, &tree);
|
1896
|
+
|
1846
1897
|
char *commands[MAX_COMMAND_COUNT];
|
1847
1898
|
unsigned int result = RULES_OK;
|
1848
1899
|
unsigned int commandCount = 0;
|
1849
|
-
result = handleState(
|
1900
|
+
result = handleState(tree,
|
1850
1901
|
state,
|
1851
1902
|
commands,
|
1852
1903
|
&commandCount,
|
@@ -1862,9 +1913,12 @@ unsigned int startUpdateState(void *handle,
|
|
1862
1913
|
|
1863
1914
|
}
|
1864
1915
|
|
1865
|
-
unsigned int completeAction(
|
1916
|
+
unsigned int completeAction(unsigned int handle,
|
1866
1917
|
void *actionHandle,
|
1867
1918
|
char *state) {
|
1919
|
+
ruleset *tree;
|
1920
|
+
RESOLVE_HANDLE(handle, &tree);
|
1921
|
+
|
1868
1922
|
char *commands[MAX_COMMAND_COUNT];
|
1869
1923
|
unsigned int commandCount = 0;
|
1870
1924
|
actionContext *context = (actionContext*)actionHandle;
|
@@ -1880,7 +1934,7 @@ unsigned int completeAction(void *handle,
|
|
1880
1934
|
}
|
1881
1935
|
|
1882
1936
|
++commandCount;
|
1883
|
-
result = handleState(
|
1937
|
+
result = handleState(tree,
|
1884
1938
|
state,
|
1885
1939
|
commands,
|
1886
1940
|
&commandCount,
|
@@ -1902,7 +1956,7 @@ unsigned int completeAction(void *handle,
|
|
1902
1956
|
return RULES_OK;
|
1903
1957
|
}
|
1904
1958
|
|
1905
|
-
unsigned int completeAndStartAction(
|
1959
|
+
unsigned int completeAndStartAction(unsigned int handle,
|
1906
1960
|
unsigned int expectedReplies,
|
1907
1961
|
void *actionHandle,
|
1908
1962
|
char **messages) {
|
@@ -1959,19 +2013,22 @@ unsigned int completeAndStartAction(void *handle,
|
|
1959
2013
|
return RULES_OK;
|
1960
2014
|
}
|
1961
2015
|
|
1962
|
-
unsigned int abandonAction(
|
2016
|
+
unsigned int abandonAction(unsigned int handle, void *actionHandle) {
|
1963
2017
|
freeReplyObject(((actionContext*)actionHandle)->reply);
|
1964
2018
|
free(actionHandle);
|
1965
2019
|
return RULES_OK;
|
1966
2020
|
}
|
1967
2021
|
|
1968
|
-
unsigned int queueMessage(
|
2022
|
+
unsigned int queueMessage(unsigned int handle, unsigned int queueAction, char *sid, char *destination, char *message) {
|
2023
|
+
ruleset *tree;
|
2024
|
+
RESOLVE_HANDLE(handle, &tree);
|
2025
|
+
|
1969
2026
|
void *rulesBinding;
|
1970
2027
|
if (!sid) {
|
1971
2028
|
sid = "0";
|
1972
2029
|
}
|
1973
2030
|
|
1974
|
-
unsigned int result = resolveBinding(
|
2031
|
+
unsigned int result = resolveBinding(tree, sid, &rulesBinding);
|
1975
2032
|
if (result != RULES_OK) {
|
1976
2033
|
return result;
|
1977
2034
|
}
|
@@ -1979,13 +2036,16 @@ unsigned int queueMessage(void *handle, unsigned int queueAction, char *sid, cha
|
|
1979
2036
|
return registerMessage(rulesBinding, queueAction, destination, message);
|
1980
2037
|
}
|
1981
2038
|
|
1982
|
-
unsigned int startTimer(
|
2039
|
+
unsigned int startTimer(unsigned int handle, char *sid, unsigned int duration, char manualReset, char *timer) {
|
2040
|
+
ruleset *tree;
|
2041
|
+
RESOLVE_HANDLE(handle, &tree);
|
2042
|
+
|
1983
2043
|
void *rulesBinding;
|
1984
2044
|
if (!sid) {
|
1985
2045
|
sid = "0";
|
1986
2046
|
}
|
1987
2047
|
|
1988
|
-
unsigned int result = resolveBinding(
|
2048
|
+
unsigned int result = resolveBinding(tree, sid, &rulesBinding);
|
1989
2049
|
if (result != RULES_OK) {
|
1990
2050
|
return result;
|
1991
2051
|
}
|
@@ -1993,13 +2053,16 @@ unsigned int startTimer(void *handle, char *sid, unsigned int duration, char man
|
|
1993
2053
|
return registerTimer(rulesBinding, duration, manualReset, timer);
|
1994
2054
|
}
|
1995
2055
|
|
1996
|
-
unsigned int cancelTimer(
|
2056
|
+
unsigned int cancelTimer(unsigned int handle, char *sid, char *timerName) {
|
2057
|
+
ruleset *tree;
|
2058
|
+
RESOLVE_HANDLE(handle, &tree);
|
2059
|
+
|
1997
2060
|
void *rulesBinding;
|
1998
2061
|
if (!sid) {
|
1999
2062
|
sid = "0";
|
2000
2063
|
}
|
2001
2064
|
|
2002
|
-
unsigned int result = resolveBinding(
|
2065
|
+
unsigned int result = resolveBinding(tree, sid, &rulesBinding);
|
2003
2066
|
if (result != RULES_OK) {
|
2004
2067
|
return result;
|
2005
2068
|
}
|
@@ -2007,13 +2070,16 @@ unsigned int cancelTimer(void *handle, char *sid, char *timerName) {
|
|
2007
2070
|
return removeTimer(rulesBinding, timerName);
|
2008
2071
|
}
|
2009
2072
|
|
2010
|
-
unsigned int renewActionLease(
|
2073
|
+
unsigned int renewActionLease(unsigned int handle, char *sid) {
|
2074
|
+
ruleset *tree;
|
2075
|
+
RESOLVE_HANDLE(handle, &tree);
|
2076
|
+
|
2011
2077
|
void *rulesBinding;
|
2012
2078
|
if (!sid) {
|
2013
2079
|
sid = "0";
|
2014
2080
|
}
|
2015
2081
|
|
2016
|
-
unsigned int result = resolveBinding(
|
2082
|
+
unsigned int result = resolveBinding(tree, sid, &rulesBinding);
|
2017
2083
|
if (result != RULES_OK) {
|
2018
2084
|
return result;
|
2019
2085
|
}
|
data/src/rules/net.c
CHANGED
@@ -2395,12 +2395,14 @@ static unsigned int loadCommands(ruleset *tree, binding *rulesBinding) {
|
|
2395
2395
|
return RULES_OK;
|
2396
2396
|
}
|
2397
2397
|
|
2398
|
-
unsigned int bindRuleset(
|
2398
|
+
unsigned int bindRuleset(unsigned int handle,
|
2399
2399
|
char *host,
|
2400
2400
|
unsigned int port,
|
2401
2401
|
char *password,
|
2402
2402
|
unsigned char db) {
|
2403
|
-
ruleset *tree
|
2403
|
+
ruleset *tree;
|
2404
|
+
RESOLVE_HANDLE(handle, &tree);
|
2405
|
+
|
2404
2406
|
bindingsList *list;
|
2405
2407
|
if (tree->bindingsList) {
|
2406
2408
|
list = tree->bindingsList;
|
data/src/rules/rete.c
CHANGED
@@ -58,6 +58,10 @@ typedef struct all {
|
|
58
58
|
unsigned short expressionsLength;
|
59
59
|
} all;
|
60
60
|
|
61
|
+
unsigned int firstEmptyEntry = 1;
|
62
|
+
unsigned int lastEmptyEntry = MAX_HANDLES -1;
|
63
|
+
char entriesInitialized = 0;
|
64
|
+
|
61
65
|
static unsigned int validateAlgebra(char *rule);
|
62
66
|
|
63
67
|
static unsigned int createBeta(ruleset *tree,
|
@@ -1880,7 +1884,8 @@ static unsigned int createTree(ruleset *tree, char *rules) {
|
|
1880
1884
|
return RULES_OK;
|
1881
1885
|
}
|
1882
1886
|
|
1883
|
-
unsigned int createRuleset(
|
1887
|
+
unsigned int createRuleset(unsigned int *handle, char *name, char *rules, unsigned int stateCaheSize) {
|
1888
|
+
INITIALIZE_ENTRIES;
|
1884
1889
|
|
1885
1890
|
#ifdef _PRINT
|
1886
1891
|
printf("%s\n", rules);
|
@@ -1967,15 +1972,17 @@ unsigned int createRuleset(void **handle, char *name, char *rules, unsigned int
|
|
1967
1972
|
newNode->type = NODE_ALPHA;
|
1968
1973
|
newNode->value.a.operator = OP_END;
|
1969
1974
|
|
1970
|
-
*handle = tree;
|
1971
|
-
|
1972
1975
|
// will use random numbers for state stored event mids
|
1973
1976
|
srand(time(NULL));
|
1977
|
+
|
1978
|
+
CREATE_HANDLE(tree, handle);
|
1974
1979
|
return createTree(tree, rules);
|
1975
1980
|
}
|
1976
1981
|
|
1977
|
-
unsigned int deleteRuleset(
|
1978
|
-
ruleset *tree
|
1982
|
+
unsigned int deleteRuleset(unsigned int handle) {
|
1983
|
+
ruleset *tree;
|
1984
|
+
RESOLVE_HANDLE(handle, &tree);
|
1985
|
+
|
1979
1986
|
deleteBindingsList(tree);
|
1980
1987
|
free(tree->nodePool);
|
1981
1988
|
free(tree->nextPool);
|
@@ -1996,10 +2003,13 @@ unsigned int deleteRuleset(void *handle) {
|
|
1996
2003
|
}
|
1997
2004
|
free(tree->state);
|
1998
2005
|
free(tree);
|
2006
|
+
DELETE_HANDLE(handle);
|
1999
2007
|
return RULES_OK;
|
2000
2008
|
}
|
2001
2009
|
|
2002
|
-
unsigned int createClient(
|
2010
|
+
unsigned int createClient(unsigned int *handle, char *name, unsigned int stateCaheSize) {
|
2011
|
+
INITIALIZE_ENTRIES;
|
2012
|
+
|
2003
2013
|
ruleset *tree = malloc(sizeof(ruleset));
|
2004
2014
|
if (!tree) {
|
2005
2015
|
return ERR_OUT_OF_MEMORY;
|
@@ -2033,12 +2043,14 @@ unsigned int createClient(void **handle, char *name, unsigned int stateCaheSize)
|
|
2033
2043
|
return result;
|
2034
2044
|
}
|
2035
2045
|
|
2036
|
-
|
2046
|
+
CREATE_HANDLE(tree, handle);
|
2037
2047
|
return RULES_OK;
|
2038
2048
|
}
|
2039
2049
|
|
2040
|
-
unsigned int deleteClient(
|
2041
|
-
ruleset *tree
|
2050
|
+
unsigned int deleteClient(unsigned int handle) {
|
2051
|
+
ruleset *tree;
|
2052
|
+
RESOLVE_HANDLE(handle, &tree);
|
2053
|
+
|
2042
2054
|
deleteBindingsList(tree);
|
2043
2055
|
free(tree->stringPool);
|
2044
2056
|
free(tree->stateBuckets);
|
@@ -2054,6 +2066,7 @@ unsigned int deleteClient(void *handle) {
|
|
2054
2066
|
}
|
2055
2067
|
|
2056
2068
|
free(tree);
|
2069
|
+
DELETE_HANDLE(handle);
|
2057
2070
|
return RULES_OK;
|
2058
2071
|
}
|
2059
2072
|
|
data/src/rules/rules.h
CHANGED
@@ -10,6 +10,8 @@
|
|
10
10
|
#define ERR_RULE_BETA_LIMIT_EXCEEDED 8
|
11
11
|
#define ERR_RULE_WITHOUT_QUALIFIER 9
|
12
12
|
#define ERR_SETTING_NOT_FOUND 10
|
13
|
+
#define ERR_INVALID_HANDLE 11
|
14
|
+
#define ERR_HANDLE_LIMIT_EXCEEDED 12
|
13
15
|
#define ERR_PARSE_VALUE 101
|
14
16
|
#define ERR_PARSE_STRING 102
|
15
17
|
#define ERR_PARSE_NUMBER 103
|
@@ -56,24 +58,71 @@
|
|
56
58
|
#define QUEUE_ASSERT_EVENT 2
|
57
59
|
#define QUEUE_RETRACT_FACT 3
|
58
60
|
|
61
|
+
#define MAX_HANDLES 131072
|
62
|
+
|
59
63
|
#ifdef __cplusplus
|
60
64
|
extern "C" {
|
61
65
|
#endif
|
62
66
|
|
63
|
-
|
67
|
+
|
68
|
+
typedef struct handleEntry {
|
69
|
+
void *content;
|
70
|
+
unsigned int nextEmptyEntry;
|
71
|
+
} handleEntry;
|
72
|
+
|
73
|
+
handleEntry handleEntries[MAX_HANDLES];
|
74
|
+
extern unsigned int firstEmptyEntry;
|
75
|
+
extern unsigned int lastEmptyEntry;
|
76
|
+
extern char entriesInitialized;
|
77
|
+
|
78
|
+
#define INITIALIZE_ENTRIES do { \
|
79
|
+
if (!entriesInitialized) { \
|
80
|
+
for (unsigned int i = 0; i < lastEmptyEntry; ++i) { \
|
81
|
+
handleEntries[i].content = NULL; \
|
82
|
+
handleEntries[i].nextEmptyEntry = i + 1; \
|
83
|
+
} \
|
84
|
+
handleEntries[lastEmptyEntry].nextEmptyEntry = 0; \
|
85
|
+
entriesInitialized = 1; \
|
86
|
+
} \
|
87
|
+
} while(0)
|
88
|
+
|
89
|
+
#define RESOLVE_HANDLE(h, cRef) do { \
|
90
|
+
if (h < 1 || h > MAX_HANDLES - 1) return ERR_INVALID_HANDLE; \
|
91
|
+
if (!handleEntries[h].content) return ERR_INVALID_HANDLE; \
|
92
|
+
*cRef = handleEntries[h].content; \
|
93
|
+
} while(0)
|
94
|
+
|
95
|
+
#define CREATE_HANDLE(c, hRef) do { \
|
96
|
+
if (firstEmptyEntry == 0) return ERR_HANDLE_LIMIT_EXCEEDED; \
|
97
|
+
handleEntries[firstEmptyEntry].content = c; \
|
98
|
+
*hRef = firstEmptyEntry; \
|
99
|
+
firstEmptyEntry = handleEntries[firstEmptyEntry].nextEmptyEntry; \
|
100
|
+
} while(0)
|
101
|
+
|
102
|
+
#define DELETE_HANDLE(h) do { \
|
103
|
+
if (h < 1 || h > MAX_HANDLES - 1) return ERR_INVALID_HANDLE; \
|
104
|
+
if (!handleEntries[h].content) return ERR_INVALID_HANDLE; \
|
105
|
+
handleEntries[h].content = NULL; \
|
106
|
+
handleEntries[h].nextEmptyEntry = 0; \
|
107
|
+
handleEntries[lastEmptyEntry].nextEmptyEntry = h; \
|
108
|
+
lastEmptyEntry = h; \
|
109
|
+
if (!firstEmptyEntry) firstEmptyEntry = lastEmptyEntry; \
|
110
|
+
} while(0)
|
111
|
+
|
112
|
+
unsigned int createRuleset(unsigned int *handle,
|
64
113
|
char *name,
|
65
114
|
char *rules,
|
66
115
|
unsigned int stateCaheSize);
|
67
116
|
|
68
|
-
unsigned int deleteRuleset(
|
117
|
+
unsigned int deleteRuleset(unsigned int handle);
|
69
118
|
|
70
|
-
unsigned int createClient(
|
119
|
+
unsigned int createClient(unsigned int *handle,
|
71
120
|
char *name,
|
72
121
|
unsigned int stateCaheSize);
|
73
122
|
|
74
|
-
unsigned int deleteClient(
|
123
|
+
unsigned int deleteClient(unsigned int handle);
|
75
124
|
|
76
|
-
unsigned int bindRuleset(
|
125
|
+
unsigned int bindRuleset(unsigned int handle,
|
77
126
|
char *host,
|
78
127
|
unsigned int port,
|
79
128
|
char *password,
|
@@ -82,111 +131,111 @@ unsigned int bindRuleset(void *handle,
|
|
82
131
|
unsigned int complete(void *rulesBinding,
|
83
132
|
unsigned int replyCount);
|
84
133
|
|
85
|
-
unsigned int assertEvent(
|
134
|
+
unsigned int assertEvent(unsigned int handle,
|
86
135
|
char *message);
|
87
136
|
|
88
|
-
unsigned int startAssertEvent(
|
137
|
+
unsigned int startAssertEvent(unsigned int handle,
|
89
138
|
char *message,
|
90
139
|
void **rulesBinding,
|
91
140
|
unsigned int *replyCount);
|
92
141
|
|
93
|
-
unsigned int assertEvents(
|
142
|
+
unsigned int assertEvents(unsigned int handle,
|
94
143
|
char *messages);
|
95
144
|
|
96
|
-
unsigned int startAssertEvents(
|
145
|
+
unsigned int startAssertEvents(unsigned int handle,
|
97
146
|
char *messages,
|
98
147
|
void **rulesBinding,
|
99
148
|
unsigned int *replyCount);
|
100
149
|
|
101
|
-
unsigned int retractEvent(
|
150
|
+
unsigned int retractEvent(unsigned int handle,
|
102
151
|
char *message);
|
103
152
|
|
104
|
-
unsigned int startAssertFact(
|
153
|
+
unsigned int startAssertFact(unsigned int handle,
|
105
154
|
char *message,
|
106
155
|
void **rulesBinding,
|
107
156
|
unsigned int *replyCount);
|
108
157
|
|
109
|
-
unsigned int assertFact(
|
158
|
+
unsigned int assertFact(unsigned int handle,
|
110
159
|
char *message);
|
111
160
|
|
112
|
-
unsigned int startAssertFacts(
|
161
|
+
unsigned int startAssertFacts(unsigned int handle,
|
113
162
|
char *messages,
|
114
163
|
void **rulesBinding,
|
115
164
|
unsigned int *replyCount);
|
116
165
|
|
117
|
-
unsigned int assertFacts(
|
166
|
+
unsigned int assertFacts(unsigned int handle,
|
118
167
|
char *messages);
|
119
168
|
|
120
|
-
unsigned int retractFact(
|
169
|
+
unsigned int retractFact(unsigned int handle,
|
121
170
|
char *message);
|
122
171
|
|
123
|
-
unsigned int startRetractFact(
|
172
|
+
unsigned int startRetractFact(unsigned int handle,
|
124
173
|
char *message,
|
125
174
|
void **rulesBinding,
|
126
175
|
unsigned int *replyCount);
|
127
176
|
|
128
|
-
unsigned int retractFacts(
|
177
|
+
unsigned int retractFacts(unsigned int handle,
|
129
178
|
char *messages);
|
130
179
|
|
131
|
-
unsigned int startRetractFacts(
|
180
|
+
unsigned int startRetractFacts(unsigned int handle,
|
132
181
|
char *messages,
|
133
182
|
void **rulesBinding,
|
134
183
|
unsigned int *replyCount);
|
135
184
|
|
136
|
-
unsigned int startUpdateState(
|
185
|
+
unsigned int startUpdateState(unsigned int handle,
|
137
186
|
void *actionHandle,
|
138
187
|
char *state,
|
139
188
|
void **rulesBinding,
|
140
189
|
unsigned int *replyCount);
|
141
190
|
|
142
|
-
unsigned int assertState(
|
191
|
+
unsigned int assertState(unsigned int handle,
|
143
192
|
char *sid,
|
144
193
|
char *state);
|
145
194
|
|
146
|
-
unsigned int startAction(
|
195
|
+
unsigned int startAction(unsigned int handle,
|
147
196
|
char **state,
|
148
197
|
char **messages,
|
149
198
|
void **actionHandle,
|
150
199
|
void **actionBinding);
|
151
200
|
|
152
|
-
unsigned int completeAction(
|
201
|
+
unsigned int completeAction(unsigned int handle,
|
153
202
|
void *actionHandle,
|
154
203
|
char *state);
|
155
204
|
|
156
|
-
unsigned int completeAndStartAction(
|
205
|
+
unsigned int completeAndStartAction(unsigned int handle,
|
157
206
|
unsigned int expectedReplies,
|
158
207
|
void *actionHandle,
|
159
208
|
char **messages);
|
160
209
|
|
161
|
-
unsigned int abandonAction(
|
210
|
+
unsigned int abandonAction(unsigned int handle,
|
162
211
|
void *actionHandle);
|
163
212
|
|
164
|
-
unsigned int startTimer(
|
213
|
+
unsigned int startTimer(unsigned int handle,
|
165
214
|
char *sid,
|
166
215
|
unsigned int duration,
|
167
216
|
char manualReset,
|
168
217
|
char *timer);
|
169
218
|
|
170
|
-
unsigned int cancelTimer(
|
219
|
+
unsigned int cancelTimer(unsigned int handle,
|
171
220
|
char *sid,
|
172
221
|
char *timerName);
|
173
222
|
|
174
|
-
unsigned int queueMessage(
|
223
|
+
unsigned int queueMessage(unsigned int handle,
|
175
224
|
unsigned int queueAction,
|
176
225
|
char *sid,
|
177
226
|
char *destination,
|
178
227
|
char *message);
|
179
228
|
|
180
|
-
unsigned int assertTimers(
|
229
|
+
unsigned int assertTimers(unsigned int handle);
|
181
230
|
|
182
|
-
unsigned int getState(
|
231
|
+
unsigned int getState(unsigned int handle,
|
183
232
|
char *sid,
|
184
233
|
char **state);
|
185
234
|
|
186
|
-
unsigned int deleteState(
|
235
|
+
unsigned int deleteState(unsigned int handle,
|
187
236
|
char *sid);
|
188
237
|
|
189
|
-
unsigned int renewActionLease(
|
238
|
+
unsigned int renewActionLease(unsigned int handle,
|
190
239
|
char *sid);
|
191
240
|
|
192
241
|
#ifdef _WIN32
|
data/src/rules/state.c
CHANGED
@@ -503,19 +503,19 @@ static unsigned int resolveBindingAndEntry(ruleset *tree,
|
|
503
503
|
return RULES_OK;
|
504
504
|
}
|
505
505
|
|
506
|
-
unsigned int resolveBinding(void *
|
506
|
+
unsigned int resolveBinding(void *tree,
|
507
507
|
char *sid,
|
508
508
|
void **rulesBinding) {
|
509
509
|
stateEntry *entry = NULL;
|
510
|
-
return resolveBindingAndEntry(
|
510
|
+
return resolveBindingAndEntry(tree, sid, &entry, rulesBinding);
|
511
511
|
}
|
512
512
|
|
513
|
-
unsigned int refreshState(void *
|
513
|
+
unsigned int refreshState(void *tree,
|
514
514
|
char *sid) {
|
515
515
|
unsigned int result;
|
516
516
|
stateEntry *entry = NULL;
|
517
517
|
void *rulesBinding;
|
518
|
-
result = resolveBindingAndEntry(
|
518
|
+
result = resolveBindingAndEntry(tree, sid, &entry, &rulesBinding);
|
519
519
|
if (result != RULES_OK) {
|
520
520
|
return result;
|
521
521
|
}
|
@@ -585,13 +585,16 @@ unsigned int fetchStateProperty(void *tree,
|
|
585
585
|
return RULES_OK;
|
586
586
|
}
|
587
587
|
|
588
|
-
unsigned int getState(
|
588
|
+
unsigned int getState(unsigned int handle, char *sid, char **state) {
|
589
|
+
ruleset *tree;
|
590
|
+
RESOLVE_HANDLE(handle, &tree);
|
591
|
+
|
589
592
|
void *rulesBinding = NULL;
|
590
593
|
if (!sid) {
|
591
594
|
sid = "0";
|
592
595
|
}
|
593
596
|
|
594
|
-
unsigned int result = resolveBinding(
|
597
|
+
unsigned int result = resolveBinding(tree, sid, &rulesBinding);
|
595
598
|
if (result != RULES_OK) {
|
596
599
|
return result;
|
597
600
|
}
|
@@ -599,9 +602,9 @@ unsigned int getState(void *handle, char *sid, char **state) {
|
|
599
602
|
return getSession(rulesBinding, sid, state);
|
600
603
|
}
|
601
604
|
|
602
|
-
unsigned int getStateVersion(void *
|
605
|
+
unsigned int getStateVersion(void *tree, char *sid, unsigned long *stateVersion) {
|
603
606
|
void *rulesBinding = NULL;
|
604
|
-
unsigned int result = resolveBinding(
|
607
|
+
unsigned int result = resolveBinding(tree, sid, &rulesBinding);
|
605
608
|
if (result != RULES_OK) {
|
606
609
|
return result;
|
607
610
|
}
|
@@ -610,17 +613,20 @@ unsigned int getStateVersion(void *handle, char *sid, unsigned long *stateVersio
|
|
610
613
|
}
|
611
614
|
|
612
615
|
|
613
|
-
unsigned int deleteState(
|
616
|
+
unsigned int deleteState(unsigned int handle, char *sid) {
|
617
|
+
ruleset *tree;
|
618
|
+
RESOLVE_HANDLE(handle, &tree);
|
619
|
+
|
614
620
|
if (!sid) {
|
615
621
|
sid = "0";
|
616
622
|
}
|
617
623
|
|
618
624
|
void *rulesBinding = NULL;
|
619
|
-
unsigned int result = resolveBinding(
|
625
|
+
unsigned int result = resolveBinding(tree, sid, &rulesBinding);
|
620
626
|
if (result != RULES_OK) {
|
621
627
|
return result;
|
622
628
|
}
|
623
629
|
|
624
630
|
unsigned int sidHash = fnv1Hash32(sid, strlen(sid));
|
625
|
-
return deleteSession(
|
631
|
+
return deleteSession(tree, rulesBinding, sid, sidHash);
|
626
632
|
}
|
data/src/rules/state.h
CHANGED
data/src/rulesrb/rules.c
CHANGED
@@ -23,7 +23,7 @@ static VALUE rbCreateRuleset(VALUE self, VALUE name, VALUE rules, VALUE stateCac
|
|
23
23
|
static VALUE rbDeleteRuleset(VALUE self, VALUE handle) {
|
24
24
|
Check_Type(handle, T_FIXNUM);
|
25
25
|
|
26
|
-
unsigned int result = deleteRuleset((
|
26
|
+
unsigned int result = deleteRuleset(FIX2INT(handle));
|
27
27
|
if (result != RULES_OK) {
|
28
28
|
if (result == ERR_OUT_OF_MEMORY) {
|
29
29
|
rb_raise(rb_eNoMemError, "Out of memory");
|
@@ -75,9 +75,9 @@ static VALUE rbBindRuleset(VALUE self, VALUE handle, VALUE host, VALUE port, VAL
|
|
75
75
|
|
76
76
|
unsigned int result;
|
77
77
|
if (TYPE(password) == T_STRING) {
|
78
|
-
result = bindRuleset((
|
78
|
+
result = bindRuleset(FIX2INT(handle), RSTRING_PTR(host), FIX2INT(port), RSTRING_PTR(password), FIX2INT(db));
|
79
79
|
} else if (TYPE(password) == T_NIL) {
|
80
|
-
result = bindRuleset((
|
80
|
+
result = bindRuleset(FIX2INT(handle), RSTRING_PTR(host), FIX2INT(port), NULL, FIX2INT(db));
|
81
81
|
} else {
|
82
82
|
rb_raise(rb_eTypeError, "Wrong argument type for password");
|
83
83
|
}
|
@@ -115,7 +115,7 @@ static VALUE rbStartAssertEvent(VALUE self, VALUE handle, VALUE event) {
|
|
115
115
|
|
116
116
|
unsigned int replyCount;
|
117
117
|
void *rulesBinding = NULL;
|
118
|
-
unsigned int result = startAssertEvent((
|
118
|
+
unsigned int result = startAssertEvent(FIX2INT(handle), RSTRING_PTR(event), &rulesBinding, &replyCount);
|
119
119
|
if (result == RULES_OK || result == ERR_EVENT_NOT_HANDLED) {
|
120
120
|
VALUE output = rb_ary_new();
|
121
121
|
rb_ary_push(output, INT2FIX(rulesBinding));
|
@@ -136,7 +136,7 @@ static VALUE rbAssertEvent(VALUE self, VALUE handle, VALUE event) {
|
|
136
136
|
Check_Type(handle, T_FIXNUM);
|
137
137
|
Check_Type(event, T_STRING);
|
138
138
|
|
139
|
-
unsigned int result = assertEvent((
|
139
|
+
unsigned int result = assertEvent(FIX2INT(handle), RSTRING_PTR(event));
|
140
140
|
if (result == RULES_OK || result == ERR_EVENT_NOT_HANDLED || result == ERR_EVENT_OBSERVED) {
|
141
141
|
return INT2FIX(result);
|
142
142
|
} else {
|
@@ -156,7 +156,7 @@ static VALUE rbQueueAssertEvent(VALUE self, VALUE handle, VALUE sid, VALUE desti
|
|
156
156
|
Check_Type(destination, T_STRING);
|
157
157
|
Check_Type(event, T_STRING);
|
158
158
|
|
159
|
-
unsigned int result = queueMessage((
|
159
|
+
unsigned int result = queueMessage(FIX2INT(handle), QUEUE_ASSERT_EVENT, RSTRING_PTR(sid), RSTRING_PTR(destination), RSTRING_PTR(event));
|
160
160
|
if (result != RULES_OK) {
|
161
161
|
if (result == ERR_OUT_OF_MEMORY) {
|
162
162
|
rb_raise(rb_eNoMemError, "Out of memory");
|
@@ -174,7 +174,7 @@ static VALUE rbStartAssertEvents(VALUE self, VALUE handle, VALUE events) {
|
|
174
174
|
|
175
175
|
unsigned int replyCount;
|
176
176
|
void *rulesBinding = NULL;
|
177
|
-
unsigned int result = startAssertEvents((
|
177
|
+
unsigned int result = startAssertEvents(FIX2INT(handle), RSTRING_PTR(events), &rulesBinding, &replyCount);
|
178
178
|
if (result == RULES_OK || result == ERR_EVENT_NOT_HANDLED) {
|
179
179
|
VALUE output = rb_ary_new();
|
180
180
|
rb_ary_push(output, INT2FIX(rulesBinding));
|
@@ -195,7 +195,7 @@ static VALUE rbAssertEvents(VALUE self, VALUE handle, VALUE events) {
|
|
195
195
|
Check_Type(handle, T_FIXNUM);
|
196
196
|
Check_Type(events, T_STRING);
|
197
197
|
|
198
|
-
unsigned int result = assertEvents((
|
198
|
+
unsigned int result = assertEvents(FIX2INT(handle), RSTRING_PTR(events));
|
199
199
|
if (result != RULES_OK) {
|
200
200
|
if (result == ERR_OUT_OF_MEMORY) {
|
201
201
|
rb_raise(rb_eNoMemError, "Out of memory");
|
@@ -211,7 +211,7 @@ static VALUE rbRetractEvent(VALUE self, VALUE handle, VALUE event) {
|
|
211
211
|
Check_Type(handle, T_FIXNUM);
|
212
212
|
Check_Type(event, T_STRING);
|
213
213
|
|
214
|
-
unsigned int result = retractEvent((
|
214
|
+
unsigned int result = retractEvent(FIX2INT(handle), RSTRING_PTR(event));
|
215
215
|
if (result == RULES_OK || result == ERR_EVENT_NOT_HANDLED || result == ERR_EVENT_OBSERVED) {
|
216
216
|
return INT2FIX(result);
|
217
217
|
} else {
|
@@ -231,7 +231,7 @@ static VALUE rbStartAssertFact(VALUE self, VALUE handle, VALUE fact) {
|
|
231
231
|
|
232
232
|
unsigned int replyCount;
|
233
233
|
void *rulesBinding = NULL;
|
234
|
-
unsigned int result = startAssertFact((
|
234
|
+
unsigned int result = startAssertFact(FIX2INT(handle), RSTRING_PTR(fact), &rulesBinding, &replyCount);
|
235
235
|
if (result == RULES_OK || result == ERR_EVENT_NOT_HANDLED) {
|
236
236
|
VALUE output = rb_ary_new();
|
237
237
|
rb_ary_push(output, INT2FIX(rulesBinding));
|
@@ -252,7 +252,7 @@ static VALUE rbAssertFact(VALUE self, VALUE handle, VALUE fact) {
|
|
252
252
|
Check_Type(handle, T_FIXNUM);
|
253
253
|
Check_Type(fact, T_STRING);
|
254
254
|
|
255
|
-
unsigned int result = assertFact((
|
255
|
+
unsigned int result = assertFact(FIX2INT(handle), RSTRING_PTR(fact));
|
256
256
|
if (result == RULES_OK || result == ERR_EVENT_NOT_HANDLED || result == ERR_EVENT_OBSERVED) {
|
257
257
|
return INT2FIX(result);
|
258
258
|
} else {
|
@@ -272,7 +272,7 @@ static VALUE rbQueueAssertFact(VALUE self, VALUE handle, VALUE sid, VALUE destin
|
|
272
272
|
Check_Type(destination, T_STRING);
|
273
273
|
Check_Type(event, T_STRING);
|
274
274
|
|
275
|
-
unsigned int result = queueMessage((
|
275
|
+
unsigned int result = queueMessage(FIX2INT(handle), QUEUE_ASSERT_FACT, RSTRING_PTR(sid), RSTRING_PTR(destination), RSTRING_PTR(event));
|
276
276
|
if (result != RULES_OK) {
|
277
277
|
if (result == ERR_OUT_OF_MEMORY) {
|
278
278
|
rb_raise(rb_eNoMemError, "Out of memory");
|
@@ -290,7 +290,7 @@ static VALUE rbStartAssertFacts(VALUE self, VALUE handle, VALUE facts) {
|
|
290
290
|
|
291
291
|
unsigned int replyCount;
|
292
292
|
void *rulesBinding = NULL;
|
293
|
-
unsigned int result = startAssertFacts((
|
293
|
+
unsigned int result = startAssertFacts(FIX2INT(handle), RSTRING_PTR(facts), &rulesBinding, &replyCount);
|
294
294
|
if (result == RULES_OK || result == ERR_EVENT_NOT_HANDLED) {
|
295
295
|
VALUE output = rb_ary_new();
|
296
296
|
rb_ary_push(output, INT2FIX(rulesBinding));
|
@@ -311,7 +311,7 @@ static VALUE rbAssertFacts(VALUE self, VALUE handle, VALUE facts) {
|
|
311
311
|
Check_Type(handle, T_FIXNUM);
|
312
312
|
Check_Type(facts, T_STRING);
|
313
313
|
|
314
|
-
unsigned int result = assertFacts((
|
314
|
+
unsigned int result = assertFacts(FIX2INT(handle), RSTRING_PTR(facts));
|
315
315
|
if (result != RULES_OK) {
|
316
316
|
if (result == ERR_OUT_OF_MEMORY) {
|
317
317
|
rb_raise(rb_eNoMemError, "Out of memory");
|
@@ -329,7 +329,7 @@ static VALUE rbStartRetractFact(VALUE self, VALUE handle, VALUE fact) {
|
|
329
329
|
|
330
330
|
unsigned int replyCount;
|
331
331
|
void *rulesBinding = NULL;
|
332
|
-
unsigned int result = startRetractFact((
|
332
|
+
unsigned int result = startRetractFact(FIX2INT(handle), RSTRING_PTR(fact), &rulesBinding, &replyCount);
|
333
333
|
if (result == RULES_OK || result == ERR_EVENT_NOT_HANDLED) {
|
334
334
|
VALUE output = rb_ary_new();
|
335
335
|
rb_ary_push(output, INT2FIX(rulesBinding));
|
@@ -350,7 +350,7 @@ static VALUE rbRetractFact(VALUE self, VALUE handle, VALUE fact) {
|
|
350
350
|
Check_Type(handle, T_FIXNUM);
|
351
351
|
Check_Type(fact, T_STRING);
|
352
352
|
|
353
|
-
unsigned int result = retractFact((
|
353
|
+
unsigned int result = retractFact(FIX2INT(handle), RSTRING_PTR(fact));
|
354
354
|
if (result == RULES_OK || result == ERR_EVENT_NOT_HANDLED || result == ERR_EVENT_OBSERVED) {
|
355
355
|
return INT2FIX(result);
|
356
356
|
} else {
|
@@ -370,7 +370,7 @@ static VALUE rbQueueRetractFact(VALUE self, VALUE handle, VALUE sid, VALUE desti
|
|
370
370
|
Check_Type(destination, T_STRING);
|
371
371
|
Check_Type(event, T_STRING);
|
372
372
|
|
373
|
-
unsigned int result = queueMessage((
|
373
|
+
unsigned int result = queueMessage(FIX2INT(handle), QUEUE_RETRACT_FACT, RSTRING_PTR(sid), RSTRING_PTR(destination), RSTRING_PTR(event));
|
374
374
|
if (result != RULES_OK) {
|
375
375
|
if (result == ERR_OUT_OF_MEMORY) {
|
376
376
|
rb_raise(rb_eNoMemError, "Out of memory");
|
@@ -388,7 +388,7 @@ static VALUE rbStartRetractFacts(VALUE self, VALUE handle, VALUE facts) {
|
|
388
388
|
|
389
389
|
unsigned int replyCount;
|
390
390
|
void *rulesBinding = NULL;
|
391
|
-
unsigned int result = startRetractFacts((
|
391
|
+
unsigned int result = startRetractFacts(FIX2INT(handle), RSTRING_PTR(facts), &rulesBinding, &replyCount);
|
392
392
|
if (result == RULES_OK || result == ERR_EVENT_NOT_HANDLED) {
|
393
393
|
VALUE output = rb_ary_new();
|
394
394
|
rb_ary_push(output, INT2FIX(rulesBinding));
|
@@ -409,7 +409,7 @@ static VALUE rbRetractFacts(VALUE self, VALUE handle, VALUE facts) {
|
|
409
409
|
Check_Type(handle, T_FIXNUM);
|
410
410
|
Check_Type(facts, T_STRING);
|
411
411
|
|
412
|
-
unsigned int result = retractFacts((
|
412
|
+
unsigned int result = retractFacts(FIX2INT(handle), RSTRING_PTR(facts));
|
413
413
|
if (result != RULES_OK) {
|
414
414
|
if (result == ERR_OUT_OF_MEMORY) {
|
415
415
|
rb_raise(rb_eNoMemError, "Out of memory");
|
@@ -426,7 +426,7 @@ static VALUE rbAssertState(VALUE self, VALUE handle, VALUE sid, VALUE state) {
|
|
426
426
|
Check_Type(sid, T_STRING);
|
427
427
|
Check_Type(state, T_STRING);
|
428
428
|
|
429
|
-
unsigned int result = assertState((
|
429
|
+
unsigned int result = assertState(FIX2INT(handle), RSTRING_PTR(sid), RSTRING_PTR(state));
|
430
430
|
if (result == RULES_OK || result == ERR_EVENT_NOT_HANDLED || result == ERR_EVENT_OBSERVED) {
|
431
431
|
return INT2FIX(result);
|
432
432
|
} else {
|
@@ -447,7 +447,7 @@ static VALUE rbStartUpdateState(VALUE self, VALUE handle, VALUE actionHandle, VA
|
|
447
447
|
|
448
448
|
unsigned int replyCount;
|
449
449
|
void *rulesBinding = NULL;
|
450
|
-
unsigned int result = startUpdateState((
|
450
|
+
unsigned int result = startUpdateState(FIX2INT(handle), (void *)FIX2LONG(actionHandle), RSTRING_PTR(state), &rulesBinding, &replyCount);
|
451
451
|
if (result == RULES_OK || result == ERR_EVENT_NOT_HANDLED) {
|
452
452
|
VALUE output = rb_ary_new();
|
453
453
|
rb_ary_push(output, INT2FIX(rulesBinding));
|
@@ -471,7 +471,7 @@ static VALUE rbStartAction(VALUE self, VALUE handle) {
|
|
471
471
|
char *messages;
|
472
472
|
void *actionHandle;
|
473
473
|
void *actionBinding;
|
474
|
-
unsigned int result = startAction((
|
474
|
+
unsigned int result = startAction(FIX2INT(handle), &state, &messages, &actionHandle, &actionBinding);
|
475
475
|
if (result == ERR_NO_ACTION_AVAILABLE) {
|
476
476
|
return Qnil;
|
477
477
|
} else if (result != RULES_OK) {
|
@@ -495,7 +495,7 @@ static VALUE rbCompleteAction(VALUE self, VALUE handle, VALUE actionHandle, VALU
|
|
495
495
|
Check_Type(actionHandle, T_FIXNUM);
|
496
496
|
Check_Type(state, T_STRING);
|
497
497
|
|
498
|
-
unsigned int result = completeAction((
|
498
|
+
unsigned int result = completeAction(FIX2INT(handle), (void *)FIX2LONG(actionHandle), RSTRING_PTR(state));
|
499
499
|
if (result != RULES_OK) {
|
500
500
|
if (result == ERR_OUT_OF_MEMORY) {
|
501
501
|
rb_raise(rb_eNoMemError, "Out of memory");
|
@@ -513,7 +513,7 @@ static VALUE rbCompleteAndStartAction(VALUE self, VALUE handle, VALUE expectedRe
|
|
513
513
|
Check_Type(actionHandle, T_FIXNUM);
|
514
514
|
|
515
515
|
char *messages;
|
516
|
-
unsigned int result = completeAndStartAction((
|
516
|
+
unsigned int result = completeAndStartAction(FIX2INT(handle), FIX2LONG(expectedReplies), (void *)FIX2LONG(actionHandle), &messages);
|
517
517
|
if (result == ERR_NO_ACTION_AVAILABLE) {
|
518
518
|
return Qnil;
|
519
519
|
} else if (result != RULES_OK) {
|
@@ -532,7 +532,7 @@ static VALUE rbAbandonAction(VALUE self, VALUE handle, VALUE actionHandle) {
|
|
532
532
|
Check_Type(handle, T_FIXNUM);
|
533
533
|
Check_Type(actionHandle, T_FIXNUM);
|
534
534
|
|
535
|
-
unsigned int result = abandonAction((
|
535
|
+
unsigned int result = abandonAction(FIX2INT(handle), (void *)FIX2LONG(actionHandle));
|
536
536
|
if (result != RULES_OK) {
|
537
537
|
if (result == ERR_OUT_OF_MEMORY) {
|
538
538
|
rb_raise(rb_eNoMemError, "Out of memory");
|
@@ -551,7 +551,7 @@ static VALUE rbStartTimer(VALUE self, VALUE handle, VALUE sid, VALUE duration, V
|
|
551
551
|
Check_Type(manualReset, T_FIXNUM);
|
552
552
|
Check_Type(timer, T_STRING);
|
553
553
|
|
554
|
-
unsigned int result = startTimer((
|
554
|
+
unsigned int result = startTimer(FIX2INT(handle), RSTRING_PTR(sid), FIX2UINT(duration), FIX2SHORT(manualReset), RSTRING_PTR(timer));
|
555
555
|
if (result != RULES_OK) {
|
556
556
|
if (result == ERR_OUT_OF_MEMORY) {
|
557
557
|
rb_raise(rb_eNoMemError, "Out of memory");
|
@@ -568,7 +568,7 @@ static VALUE rbCancelTimer(VALUE self, VALUE handle, VALUE sid, VALUE timerName)
|
|
568
568
|
Check_Type(sid, T_STRING);
|
569
569
|
Check_Type(timerName, T_STRING);
|
570
570
|
|
571
|
-
unsigned int result = cancelTimer((
|
571
|
+
unsigned int result = cancelTimer(FIX2INT(handle), RSTRING_PTR(sid), RSTRING_PTR(timerName));
|
572
572
|
if (result != RULES_OK) {
|
573
573
|
if (result == ERR_OUT_OF_MEMORY) {
|
574
574
|
rb_raise(rb_eNoMemError, "Out of memory");
|
@@ -583,7 +583,7 @@ static VALUE rbCancelTimer(VALUE self, VALUE handle, VALUE sid, VALUE timerName)
|
|
583
583
|
static VALUE rbAssertTimers(VALUE self, VALUE handle) {
|
584
584
|
Check_Type(handle, T_FIXNUM);
|
585
585
|
|
586
|
-
unsigned int result = assertTimers((
|
586
|
+
unsigned int result = assertTimers(FIX2INT(handle));
|
587
587
|
if (result == RULES_OK) {
|
588
588
|
return INT2FIX(1);
|
589
589
|
} else if (result == ERR_NO_TIMERS_AVAILABLE) {
|
@@ -604,7 +604,7 @@ static VALUE rbGetState(VALUE self, VALUE handle, VALUE sid) {
|
|
604
604
|
Check_Type(sid, T_STRING);
|
605
605
|
|
606
606
|
char *state;
|
607
|
-
unsigned int result = getState((
|
607
|
+
unsigned int result = getState(FIX2INT(handle), RSTRING_PTR(sid), &state);
|
608
608
|
if (result != RULES_OK) {
|
609
609
|
if (result == ERR_OUT_OF_MEMORY) {
|
610
610
|
rb_raise(rb_eNoMemError, "Out of memory");
|
@@ -622,7 +622,7 @@ static VALUE rbDeleteState(VALUE self, VALUE handle, VALUE sid) {
|
|
622
622
|
Check_Type(handle, T_FIXNUM);
|
623
623
|
Check_Type(sid, T_STRING);
|
624
624
|
|
625
|
-
unsigned int result = deleteState((
|
625
|
+
unsigned int result = deleteState(FIX2INT(handle), RSTRING_PTR(sid));
|
626
626
|
if (result != RULES_OK) {
|
627
627
|
if (result == ERR_OUT_OF_MEMORY) {
|
628
628
|
rb_raise(rb_eNoMemError, "Out of memory");
|
@@ -638,7 +638,7 @@ static VALUE rbRenewActionLease(VALUE self, VALUE handle, VALUE sid) {
|
|
638
638
|
Check_Type(handle, T_FIXNUM);
|
639
639
|
Check_Type(sid, T_STRING);
|
640
640
|
|
641
|
-
unsigned int result = renewActionLease((
|
641
|
+
unsigned int result = renewActionLease(FIX2INT(handle), RSTRING_PTR(sid));
|
642
642
|
if (result != RULES_OK) {
|
643
643
|
if (result == ERR_OUT_OF_MEMORY) {
|
644
644
|
rb_raise(rb_eNoMemError, "Out of memory");
|
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.48
|
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-02-
|
11
|
+
date: 2018-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|