durable_rules 0.34.47 → 0.34.48
Sign up to get free protection for your applications and to get access to all the features.
- 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
|