durable_rules 0.34.13 → 0.34.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fbd70ca841544d3e07d8539921a26b4952a8dbff
4
- data.tar.gz: 439eb6309117246431351766b4c6dea31a2811bc
3
+ metadata.gz: 0aeecc3ee5cdf6e3bd695b9dcd7e8509b4506b0c
4
+ data.tar.gz: 4d6702f881de8b18f93e498bcc21a6cc2299c11e
5
5
  SHA512:
6
- metadata.gz: 696e69e72419ce0aa287e69be0cec037fbaffc0a3e114f3d52c47e2112f271cdd99f30ebabdbfc4dfc19f416cae5a5eefccf2f8feffa06def0a3f738ab783908
7
- data.tar.gz: 71bc5d5b8dd85662b26acac829b6694cdae2cca96577b635c98141dfaf31c405a0005f19788f8212c339e351b745e13833bbf522fdfc929ea600118e00d28b35
6
+ metadata.gz: b91eda96fb2f9ff19faf9a92f0be6f97da3f577d5b997d067627f5d8b2d3a7976e479095302cb1487b83705263bea66e8943aea4858ae4ad502c228f648fc450
7
+ data.tar.gz: d55512808c130ff767d6172e969a612d691d6ff0600042907c47d28284cdbb4277669d0533b154a58351d795de317d1451c11754f69941cff3287a6b0b39d0c1
data/librb/durable.rb CHANGED
@@ -5,11 +5,11 @@ module Durable
5
5
  @@rulesets = {}
6
6
  @@start_blocks = []
7
7
 
8
- def self.create_queue(ruleset_name, database = {:host => 'localhost', :port => 6379, :password => nil}, state_cache_size = 1024)
8
+ def self.create_queue(ruleset_name, database = {:host => 'localhost', :port => 6379, :password => nil, :db => 0}, state_cache_size = 1024)
9
9
  Engine::Queue.new ruleset_name, database, state_cache_size
10
10
  end
11
11
 
12
- def self.create_host(databases = [{:host => 'localhost', :port => 6379, :password => nil}], state_cache_size = 1024)
12
+ def self.create_host(databases = [{:host => 'localhost', :port => 6379, :password => nil, :db => 0}], state_cache_size = 1024)
13
13
  main_host = Engine::Host.new @@rulesets, databases, state_cache_size
14
14
  for block in @@start_blocks
15
15
  main_host.instance_exec main_host, &block
@@ -18,7 +18,7 @@ module Durable
18
18
  main_host
19
19
  end
20
20
 
21
- def self.run_all(databases = [{:host => 'localhost', :port => 6379, :password => nil}], host_name = nil, port = nil, run = nil, state_cache_size = 1024)
21
+ def self.run_all(databases = [{:host => 'localhost', :port => 6379, :password => nil, :db => 0}], host_name = nil, port = nil, run = nil, state_cache_size = 1024)
22
22
  main_host = self.create_host databases, state_cache_size
23
23
  Interface::Application.set_host main_host
24
24
  if run
@@ -241,6 +241,12 @@ module Durable
241
241
  self
242
242
  end
243
243
 
244
+ def matches(other)
245
+ @__op = :$mt
246
+ @right = other
247
+ self
248
+ end
249
+
244
250
  def -@
245
251
  @__op = :$nex
246
252
  @right = 1
data/librb/engine.rb CHANGED
@@ -419,9 +419,9 @@ module Engine
419
419
  def bind(databases)
420
420
  for db in databases do
421
421
  if db.kind_of? String
422
- Rules.bind_ruleset @handle, db, 0, nil
422
+ Rules.bind_ruleset @handle, db, 0, nil, 0
423
423
  else
424
- Rules.bind_ruleset @handle, db[:host], db[:port], db[:password]
424
+ Rules.bind_ruleset @handle, db[:host], db[:port], db[:password], db[:db]
425
425
  end
426
426
  end
427
427
  end
@@ -1086,7 +1086,7 @@ module Engine
1086
1086
 
1087
1087
  class Host
1088
1088
 
1089
- def initialize(ruleset_definitions = nil, databases = [{:host => 'localhost', :port => 6379, :password => nil}], state_cache_size = 1024)
1089
+ def initialize(ruleset_definitions = nil, databases = [{:host => 'localhost', :port => 6379, :password => nil, :db => 0}], state_cache_size = 1024)
1090
1090
  @ruleset_directory = {}
1091
1091
  @ruleset_list = []
1092
1092
  @databases = databases
@@ -1303,13 +1303,13 @@ module Engine
1303
1303
 
1304
1304
  class Queue
1305
1305
 
1306
- def initialize(ruleset_name, database = {:host => 'localhost', :port => 6379, :password => nil}, state_cache_size = 1024)
1306
+ def initialize(ruleset_name, database = {:host => 'localhost', :port => 6379, :password => nil, :db => 0}, state_cache_size = 1024)
1307
1307
  @_ruleset_name = ruleset_name.to_s
1308
1308
  @handle = Rules.create_client @_ruleset_name, state_cache_size
1309
1309
  if database.kind_of? String
1310
- Rules.bind_ruleset @handle, database, 0, nil
1310
+ Rules.bind_ruleset @handle, database, 0, nil, 0
1311
1311
  else
1312
- Rules.bind_ruleset @handle, database[:host], database[:port], database[:password]
1312
+ Rules.bind_ruleset @handle, database[:host], database[:port], database[:password], database[:db]
1313
1313
  end
1314
1314
  end
1315
1315
 
data/src/rules/Makefile CHANGED
@@ -1,4 +1,4 @@
1
- OBJ=events.o json.o net.o rete.o state.o
1
+ OBJ=events.o json.o net.o rete.o state.o regex.o
2
2
  LIBNAME=librules
3
3
 
4
4
  # Fallback to gcc when $CC is not in $PATH.
@@ -16,11 +16,12 @@ STLIB_MAKE_CMD=ld $(ARCH) -o $(STLIBNAME) -L../../deps/hiredis/ -lhiredis -r
16
16
  all: $(STLIBNAME)
17
17
 
18
18
  # Deps (use make dep to generate this)
19
- events.o: events.c rules.h net.h json.h
19
+ events.o: events.c rules.h net.h json.h regex.h
20
20
  json.o: json.c json.h rules.h
21
21
  net.o: net.c net.h rules.h json.h rete.h
22
- rete.o: rete.c rete.h net.h json.h state.h
22
+ rete.o: rete.c rete.h net.h json.h state.h regex.h
23
23
  state.o: state.c state.h json.h net.h
24
+ regex.o: regex.c regex.h rules.h
24
25
 
25
26
  $(STLIBNAME): $(OBJ)
26
27
  $(STLIB_MAKE_CMD) $(OBJ)
data/src/rules/events.c CHANGED
@@ -5,6 +5,9 @@
5
5
  #include "rules.h"
6
6
  #include "net.h"
7
7
  #include "json.h"
8
+ #include "regex.h"
9
+
10
+ #include <time.h>
8
11
 
9
12
  #define MAX_EVENT_PROPERTIES 64
10
13
  #define MAX_RESULT_NODES 32
@@ -35,6 +38,7 @@
35
38
  #define OP_STRING_DOUBLE 0x0103
36
39
  #define OP_STRING_STRING 0x0101
37
40
  #define OP_STRING_NIL 0x0107
41
+ #define OP_STRING_REGEX 0x010C
38
42
  #define OP_NIL_BOOL 0x0704
39
43
  #define OP_NIL_INT 0x0702
40
44
  #define OP_NIL_DOUBLE 0x0703
@@ -893,6 +897,15 @@ static unsigned int isMatch(ruleset *tree,
893
897
  }
894
898
 
895
899
  break;
900
+ case OP_STRING_REGEX:
901
+ *propertyMatch = evaluateRegex(tree,
902
+ message + currentProperty->valueOffset,
903
+ currentProperty->valueLength,
904
+ currentAlpha->right.value.regex.vocabularyLength,
905
+ currentAlpha->right.value.regex.statesLength,
906
+ currentAlpha->right.value.regex.stateMachineOffset);
907
+ break;
908
+
896
909
  }
897
910
 
898
911
  if (releaseRightState) {
data/src/rules/json.h CHANGED
@@ -14,6 +14,7 @@
14
14
  #define JSON_EVENT_PROPERTY 0x09
15
15
  #define JSON_STATE_IDIOM 0x0A
16
16
  #define JSON_EVENT_IDIOM 0x0B
17
+ #define JSON_REGEX 0x0C
17
18
 
18
19
  unsigned int readNextName(char *start, char **first, char **last, unsigned int *hash);
19
20
  unsigned int readNextValue(char *start, char **first, char **last, unsigned char *type);
data/src/rules/net.c CHANGED
@@ -11,6 +11,39 @@
11
11
  #include "rules.h"
12
12
  #include "json.h"
13
13
 
14
+ #define VERIFY(result, origin) do { \
15
+ if (result != REDIS_OK) { \
16
+ return ERR_REDIS_ERROR; \
17
+ } \
18
+ redisReply *reply; \
19
+ result = tryGetReply(reContext, &reply); \
20
+ if (result != RULES_OK) { \
21
+ return result; \
22
+ } \
23
+ if (reply->type == REDIS_REPLY_ERROR) { \
24
+ printf(origin); \
25
+ printf(" err string %s\n", reply->str); \
26
+ freeReplyObject(reply); \
27
+ return ERR_REDIS_ERROR; \
28
+ } \
29
+ freeReplyObject(reply);\
30
+ } while(0)
31
+
32
+ #define GET_REPLY(result, origin, reply) do { \
33
+ if (result != REDIS_OK) { \
34
+ return ERR_REDIS_ERROR; \
35
+ } \
36
+ result = tryGetReply(reContext, &reply); \
37
+ if (result != RULES_OK) { \
38
+ return result; \
39
+ } \
40
+ if (reply->type == REDIS_REPLY_ERROR) { \
41
+ printf(origin); \
42
+ printf(" err string %s\n", reply->str); \
43
+ freeReplyObject(reply); \
44
+ return ERR_REDIS_ERROR; \
45
+ } \
46
+ } while(0)
14
47
 
15
48
  #ifdef _WIN32
16
49
  int asprintf(char** ret, char* format, ...){
@@ -39,6 +72,25 @@ int asprintf(char** ret, char* format, ...){
39
72
  }
40
73
  #endif
41
74
 
75
+ static unsigned int tryGetReply(redisContext *reContext,
76
+ redisReply **reply) {
77
+
78
+ if (redisGetReply(reContext, (void**)reply) != REDIS_OK) {
79
+ printf("getReply err %d, %d, %s\n", reContext->err, errno, reContext->errstr);
80
+ #ifndef _WIN32
81
+ if (redisReconnect(reContext) != REDIS_OK) {
82
+ printf("reconnect err %d, %d, %s\n", reContext->err, errno, reContext->errstr);
83
+ return ERR_REDIS_ERROR;
84
+ }
85
+ return ERR_TRY_AGAIN;
86
+ #else
87
+ return ERR_REDIS_ERROR;
88
+ #endif
89
+ }
90
+
91
+ return RULES_OK;
92
+ }
93
+
42
94
  static unsigned int createIdiom(ruleset *tree, jsonValue *newValue, char **idiomString) {
43
95
  char *rightProperty;
44
96
  char *rightAlias;
@@ -322,13 +374,8 @@ static unsigned int loadPartitionCommand(ruleset *tree, binding *rulesBinding) {
322
374
  return ERR_OUT_OF_MEMORY;
323
375
  }
324
376
 
325
- redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
326
- redisGetReply(reContext, (void**)&reply);
327
- if (reply->type == REDIS_REPLY_ERROR) {
328
- printf("%s\n", reply->str);
329
- freeReplyObject(reply);
330
- return ERR_REDIS_ERROR;
331
- }
377
+ unsigned int result = redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
378
+ GET_REPLY(result, "loadPartitionCommand", reply);
332
379
 
333
380
  strncpy(rulesBinding->partitionHash, reply->str, 40);
334
381
  rulesBinding->partitionHash[40] = '\0';
@@ -373,15 +420,8 @@ static unsigned int loadRemoveActionCommand(ruleset *tree, binding *rulesBinding
373
420
  return ERR_OUT_OF_MEMORY;
374
421
  }
375
422
 
376
- redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
377
- redisGetReply(reContext, (void**)&reply);
378
- if (reply->type == REDIS_REPLY_ERROR) {
379
- printf("%s\n", reply->str);
380
- freeReplyObject(reply);
381
- free(lua);
382
- return ERR_REDIS_ERROR;
383
- }
384
-
423
+ unsigned int result = redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
424
+ GET_REPLY(result, "loadRemoveActionCommand", reply);
385
425
  strncpy(rulesBinding->removeActionHash, reply->str, 40);
386
426
  rulesBinding->removeActionHash[40] = '\0';
387
427
  freeReplyObject(reply);
@@ -410,13 +450,8 @@ static unsigned int loadTimerCommand(ruleset *tree, binding *rulesBinding) {
410
450
  return ERR_OUT_OF_MEMORY;
411
451
  }
412
452
 
413
- redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
414
- redisGetReply(reContext, (void**)&reply);
415
- if (reply->type == REDIS_REPLY_ERROR) {
416
- printf("%s\n", reply->str);
417
- freeReplyObject(reply);
418
- return ERR_REDIS_ERROR;
419
- }
453
+ unsigned int result = redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
454
+ GET_REPLY(result, "loadTimerCommand", reply);
420
455
 
421
456
  strncpy(rulesBinding->timersHash, reply->str, 40);
422
457
  rulesBinding->timersHash[40] = '\0';
@@ -440,13 +475,8 @@ static unsigned int loadUpdateActionCommand(ruleset *tree, binding *rulesBinding
440
475
  return ERR_OUT_OF_MEMORY;
441
476
  }
442
477
 
443
- redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
444
- redisGetReply(reContext, (void**)&reply);
445
- if (reply->type == REDIS_REPLY_ERROR) {
446
- printf("%s\n", reply->str);
447
- freeReplyObject(reply);
448
- return ERR_REDIS_ERROR;
449
- }
478
+ unsigned int result = redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
479
+ GET_REPLY(result, "loadUpdateActionCommand", reply);
450
480
 
451
481
  strncpy(rulesBinding->updateActionHash, reply->str, 40);
452
482
  rulesBinding->updateActionHash[40] = '\0';
@@ -548,14 +578,8 @@ static unsigned int loadDeleteSessionCommand(ruleset *tree, binding *rulesBindin
548
578
  }
549
579
 
550
580
  free(deleteSessionLua);
551
- redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
552
- redisGetReply(reContext, (void**)&reply);
553
- if (reply->type == REDIS_REPLY_ERROR) {
554
- printf("%s\n", reply->str);
555
- freeReplyObject(reply);
556
- free(lua);
557
- return ERR_REDIS_ERROR;
558
- }
581
+ unsigned int result = redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
582
+ GET_REPLY(result, "loadDeleteSessionCommand", reply);
559
583
 
560
584
  strncpy(rulesBinding->deleteSessionHash, reply->str, 40);
561
585
  rulesBinding->deleteSessionHash[40] = '\0';
@@ -708,14 +732,8 @@ static unsigned int loadAddMessageCommand(ruleset *tree, binding *rulesBinding)
708
732
  }
709
733
 
710
734
  free(addMessageLua);
711
- redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
712
- redisGetReply(reContext, (void**)&reply);
713
- if (reply->type == REDIS_REPLY_ERROR) {
714
- printf("%s\n", reply->str);
715
- freeReplyObject(reply);
716
- free(lua);
717
- return ERR_REDIS_ERROR;
718
- }
735
+ unsigned int result = redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
736
+ GET_REPLY(result, "loadAddMessageCommand", reply);
719
737
 
720
738
  strncpy(rulesBinding->addMessageHash, reply->str, 40);
721
739
  rulesBinding->addMessageHash[40] = '\0';
@@ -1188,14 +1206,8 @@ static unsigned int loadPeekActionCommand(ruleset *tree, binding *rulesBinding)
1188
1206
  return ERR_OUT_OF_MEMORY;
1189
1207
  }
1190
1208
  free(peekActionLua);
1191
- redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
1192
- redisGetReply(reContext, (void**)&reply);
1193
- if (reply->type == REDIS_REPLY_ERROR) {
1194
- printf("%s\n", reply->str);
1195
- freeReplyObject(reply);
1196
- free(lua);
1197
- return ERR_REDIS_ERROR;
1198
- }
1209
+ unsigned int result = redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
1210
+ GET_REPLY(result, "loadPeekActionCommand", reply);
1199
1211
 
1200
1212
  strncpy(rulesBinding->peekActionHash, reply->str, 40);
1201
1213
  rulesBinding->peekActionHash[40] = '\0';
@@ -2140,14 +2152,8 @@ static unsigned int loadEvalMessageCommand(ruleset *tree, binding *rulesBinding)
2140
2152
  }
2141
2153
 
2142
2154
  free(oldLua);
2143
- redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
2144
- redisGetReply(reContext, (void**)&reply);
2145
- if (reply->type == REDIS_REPLY_ERROR) {
2146
- printf("%s\n", reply->str);
2147
- freeReplyObject(reply);
2148
- free(lua);
2149
- return ERR_REDIS_ERROR;
2150
- }
2155
+ unsigned int result = redisAppendCommand(reContext, "SCRIPT LOAD %s", lua);
2156
+ GET_REPLY(result, "loadEvalMessageCommand", reply);
2151
2157
 
2152
2158
  strncpy(rulesBinding->evalMessageHash, reply->str, 40);
2153
2159
  rulesBinding->evalMessageHash[40] = '\0';
@@ -2262,7 +2268,8 @@ static unsigned int loadCommands(ruleset *tree, binding *rulesBinding) {
2262
2268
  unsigned int bindRuleset(void *handle,
2263
2269
  char *host,
2264
2270
  unsigned int port,
2265
- char *password) {
2271
+ char *password,
2272
+ unsigned char db) {
2266
2273
  ruleset *tree = (ruleset*)handle;
2267
2274
  bindingsList *list;
2268
2275
  if (tree->bindingsList) {
@@ -2293,32 +2300,26 @@ unsigned int bindRuleset(void *handle,
2293
2300
  return ERR_CONNECT_REDIS;
2294
2301
  }
2295
2302
 
2303
+ int result = REDIS_OK;
2304
+
2305
+ #ifndef _WIN32
2296
2306
  struct timeval tv;
2297
2307
  tv.tv_sec = 10;
2298
2308
  tv.tv_usec = 0;
2299
- int result = redisSetTimeout(reContext, tv);
2309
+ result = redisSetTimeout(reContext, tv);
2300
2310
  if (result != REDIS_OK) {
2301
2311
  return ERR_REDIS_ERROR;
2302
2312
  }
2313
+ #endif
2303
2314
 
2304
2315
  if (password != NULL) {
2305
2316
  result = redisAppendCommand(reContext, "auth %s", password);
2306
- if (result != REDIS_OK) {
2307
- return ERR_REDIS_ERROR;
2308
- }
2309
-
2310
- redisReply *reply;
2311
- result = redisGetReply(reContext, (void**)&reply);
2312
- if (result != REDIS_OK) {
2313
- return ERR_REDIS_ERROR;
2314
- }
2315
-
2316
- if (reply->type == REDIS_REPLY_ERROR) {
2317
- freeReplyObject(reply);
2318
- return ERR_REDIS_ERROR;
2319
- }
2317
+ VERIFY(result, "bindRuleset");
2318
+ }
2320
2319
 
2321
- freeReplyObject(reply);
2320
+ if (db) {
2321
+ result = redisAppendCommand(reContext, "select %d", db);
2322
+ VERIFY(result, "bindRuleset");
2322
2323
  }
2323
2324
 
2324
2325
  if (!list->bindings) {
@@ -2365,20 +2366,8 @@ unsigned int getBindingIndex(ruleset *tree, unsigned int sidHash, unsigned int *
2365
2366
  firstBinding->partitionHash,
2366
2367
  sidHash,
2367
2368
  list->bindingsLength);
2368
- if (result != REDIS_OK) {
2369
- return ERR_REDIS_ERROR;
2370
- }
2371
-
2372
2369
  redisReply *reply;
2373
- result = redisGetReply(reContext, (void**)&reply);
2374
- if (result != REDIS_OK) {
2375
- return ERR_REDIS_ERROR;
2376
- }
2377
-
2378
- if (reply->type == REDIS_REPLY_ERROR) {
2379
- freeReplyObject(reply);
2380
- return ERR_REDIS_ERROR;
2381
- }
2370
+ GET_REPLY(result, "loadEvalMessageCommand", reply);
2382
2371
 
2383
2372
  *bindingIndex = reply->integer;
2384
2373
  freeReplyObject(reply);
@@ -2746,25 +2735,6 @@ unsigned int startNonBlockingBatch(void *rulesBinding,
2746
2735
  return result;
2747
2736
  }
2748
2737
 
2749
- static unsigned int tryGetReply(redisContext *reContext,
2750
- redisReply **reply) {
2751
-
2752
- if (redisGetReply(reContext, (void**)reply) != REDIS_OK) {
2753
- printf("getReply err %d, %d, %s\n", reContext->err, errno, reContext->errstr);
2754
- #ifndef _WIN32
2755
- if (redisReconnect(reContext) != REDIS_OK) {
2756
- printf("reconnect err %d, %d, %s\n", reContext->err, errno, reContext->errstr);
2757
- return ERR_REDIS_ERROR;
2758
- }
2759
- return ERR_TRY_AGAIN;
2760
- #else
2761
- return ERR_REDIS_ERROR;
2762
- #endif
2763
- }
2764
-
2765
- return RULES_OK;
2766
- }
2767
-
2768
2738
  unsigned int completeNonBlockingBatch(void *rulesBinding,
2769
2739
  unsigned int replyCount) {
2770
2740
  if (replyCount == 0) {
@@ -2873,23 +2843,7 @@ unsigned int removeMessage(void *rulesBinding, char *sid, char *mid) {
2873
2843
  currentBinding->factsHashset,
2874
2844
  sid,
2875
2845
  mid);
2876
- if (result != REDIS_OK) {
2877
- return ERR_REDIS_ERROR;
2878
- }
2879
-
2880
- redisReply *reply;
2881
- result = tryGetReply(reContext, &reply);
2882
- if (result != RULES_OK) {
2883
- return result;
2884
- }
2885
-
2886
- if (reply->type == REDIS_REPLY_ERROR) {
2887
- printf("removeMessage err string %s\n", reply->str);
2888
- freeReplyObject(reply);
2889
- return ERR_REDIS_ERROR;
2890
- }
2891
-
2892
- freeReplyObject(reply);
2846
+ VERIFY(result, "removeMessage");
2893
2847
  return RULES_OK;
2894
2848
  }
2895
2849
 
@@ -2980,23 +2934,7 @@ unsigned int registerTimer(void *rulesBinding, unsigned int duration, char *time
2980
2934
  currentBinding->timersSortedset,
2981
2935
  currentTime + duration,
2982
2936
  timer);
2983
- if (result != REDIS_OK) {
2984
- return ERR_REDIS_ERROR;
2985
- }
2986
-
2987
- redisReply *reply;
2988
- result = tryGetReply(reContext, &reply);
2989
- if (result != RULES_OK) {
2990
- return result;
2991
- }
2992
-
2993
- if (reply->type == REDIS_REPLY_ERROR) {
2994
- printf("registerTimer err string %s\n", reply->str);
2995
- freeReplyObject(reply);
2996
- return ERR_REDIS_ERROR;
2997
- }
2998
-
2999
- freeReplyObject(reply);
2937
+ VERIFY(result, "registerTimer");
3000
2938
  return RULES_OK;
3001
2939
  }
3002
2940
 
@@ -3008,23 +2946,7 @@ unsigned int removeTimer(void *rulesBinding, char *timer) {
3008
2946
  "zrem %s p:%s",
3009
2947
  currentBinding->timersSortedset,
3010
2948
  timer);
3011
- if (result != REDIS_OK) {
3012
- return ERR_REDIS_ERROR;
3013
- }
3014
-
3015
- redisReply *reply;
3016
- result = tryGetReply(reContext, &reply);
3017
- if (result != RULES_OK) {
3018
- return result;
3019
- }
3020
-
3021
- if (reply->type == REDIS_REPLY_ERROR) {
3022
- printf("deleteTimer err string %s\n", reply->str);
3023
- freeReplyObject(reply);
3024
- return ERR_REDIS_ERROR;
3025
- }
3026
-
3027
- freeReplyObject(reply);
2949
+ VERIFY(result, "removeTimer");
3028
2950
  return RULES_OK;
3029
2951
  }
3030
2952
 
@@ -3059,23 +2981,7 @@ unsigned int registerMessage(void *rulesBinding, unsigned int queueAction, char
3059
2981
  break;
3060
2982
  }
3061
2983
 
3062
- if (result != REDIS_OK) {
3063
- return ERR_REDIS_ERROR;
3064
- }
3065
-
3066
- redisReply *reply;
3067
- result = tryGetReply(reContext, &reply);
3068
- if (result != RULES_OK) {
3069
- return result;
3070
- }
3071
-
3072
- if (reply->type == REDIS_REPLY_ERROR) {
3073
- printf("registerMessage err string %s\n", reply->str);
3074
- freeReplyObject(reply);
3075
- return ERR_REDIS_ERROR;
3076
- }
3077
-
3078
- freeReplyObject(reply);
2984
+ VERIFY(result, "registerMessage");
3079
2985
  return RULES_OK;
3080
2986
  }
3081
2987
 
@@ -3086,21 +2992,8 @@ unsigned int getSession(void *rulesBinding, char *sid, char **state) {
3086
2992
  "hget %s %s",
3087
2993
  currentBinding->sessionHashset,
3088
2994
  sid);
3089
- if (result != REDIS_OK) {
3090
- return ERR_REDIS_ERROR;
3091
- }
3092
-
3093
2995
  redisReply *reply;
3094
- result = tryGetReply(reContext, &reply);
3095
- if (result != RULES_OK) {
3096
- return result;
3097
- }
3098
-
3099
- if (reply->type == REDIS_REPLY_ERROR) {
3100
- freeReplyObject(reply);
3101
- return ERR_REDIS_ERROR;
3102
- }
3103
-
2996
+ GET_REPLY(result, "getSession", reply);
3104
2997
  if (reply->type != REDIS_REPLY_STRING) {
3105
2998
  freeReplyObject(reply);
3106
2999
  return ERR_NEW_SESSION;
@@ -3122,21 +3015,9 @@ unsigned int getSessionVersion(void *rulesBinding, char *sid, unsigned long *sta
3122
3015
  "hget %s!v %s",
3123
3016
  currentBinding->sessionHashset,
3124
3017
  sid);
3125
- if (result != REDIS_OK) {
3126
- return ERR_REDIS_ERROR;
3127
- }
3128
-
3018
+
3129
3019
  redisReply *reply;
3130
- result = tryGetReply(reContext, &reply);
3131
- if (result != RULES_OK) {
3132
- return result;
3133
- }
3134
-
3135
- if (reply->type == REDIS_REPLY_ERROR) {
3136
- freeReplyObject(reply);
3137
- return ERR_REDIS_ERROR;
3138
- }
3139
-
3020
+ GET_REPLY(result, "getSessionVersion", reply);
3140
3021
  if (reply->type != REDIS_REPLY_INTEGER) {
3141
3022
  *stateVersion = 0;
3142
3023
  } else {
@@ -3155,23 +3036,7 @@ unsigned int deleteSession(void *rulesBinding, char *sid) {
3155
3036
  "evalsha %s 0 %s",
3156
3037
  currentBinding->deleteSessionHash,
3157
3038
  sid);
3158
- if (result != REDIS_OK) {
3159
- return ERR_REDIS_ERROR;
3160
- }
3161
-
3162
- redisReply *reply;
3163
- result = tryGetReply(reContext, &reply);
3164
- if (result != RULES_OK) {
3165
- return result;
3166
- }
3167
-
3168
- if (reply->type == REDIS_REPLY_ERROR) {
3169
- printf("deleteSession err string %s\n", reply->str);
3170
- freeReplyObject(reply);
3171
- return ERR_REDIS_ERROR;
3172
- }
3173
-
3174
- freeReplyObject(reply);
3039
+ VERIFY(result, "deleteSession");
3175
3040
  return REDIS_OK;
3176
3041
  }
3177
3042
 
@@ -3185,22 +3050,6 @@ unsigned int updateAction(void *rulesBinding, char *sid) {
3185
3050
  currentBinding->updateActionHash,
3186
3051
  sid,
3187
3052
  currentTime + 15);
3188
- if (result != REDIS_OK) {
3189
- return ERR_REDIS_ERROR;
3190
- }
3191
-
3192
- redisReply *reply;
3193
- result = tryGetReply(reContext, &reply);
3194
- if (result != RULES_OK) {
3195
- return result;
3196
- }
3197
-
3198
- if (reply->type == REDIS_REPLY_ERROR) {
3199
- printf("updateAction err string %s\n", reply->str);
3200
- freeReplyObject(reply);
3201
- return ERR_REDIS_ERROR;
3202
- }
3203
-
3204
- freeReplyObject(reply);
3053
+ VERIFY(result, "updateAction");
3205
3054
  return RULES_OK;
3206
3055
  }