line |
true |
false |
branch |
105
|
0 |
203 |
DEBUG_MSG("flags = %x", e->flags); |
112
|
0 |
0 |
DEBUG_MSG("flags = %x", e->flags); |
119
|
0 |
137 |
DEBUG_MSG("flags = %x", e->flags); |
126
|
0 |
136 |
DEBUG_MSG("flags = %x", e->flags); |
138
|
69 |
0 |
if (ac->ev.data != NULL) |
167
|
55559 |
0 |
if(self==NULL) return WAIT_FOR_EVENT_EXCEPTION; |
168
|
55559 |
0 |
if(self->ac==NULL) return WAIT_FOR_EVENT_EXCEPTION; |
173
|
55559 |
0 |
if(e==NULL) return 0; |
175
|
68 |
55491 |
if((e->flags & (WAIT_FOR_READ|WAIT_FOR_WRITE)) == (WAIT_FOR_READ|WAIT_FOR_WRITE)) { |
176
|
0 |
68 |
DEBUG_MSG("set READ and WRITE, compare read_timeout = %f and write_timeout = %f", |
178
|
66 |
2 |
if(read_timeout < 0 && write_timeout < 0) { |
|
0 |
66 |
if(read_timeout < 0 && write_timeout < 0) { |
181
|
2 |
0 |
} else if(read_timeout < 0) { |
184
|
0 |
2 |
} else if(write_timeout < 0) { |
187
|
0 |
0 |
} else if(read_timeout < write_timeout) { |
194
|
68 |
55423 |
} else if(e->flags & WAIT_FOR_READ) { |
195
|
68 |
0 |
DEBUG_MSG("set READ, read_timeout = %f", read_timeout); |
198
|
0 |
55423 |
} else if(e->flags & WAIT_FOR_WRITE) { |
199
|
55423 |
0 |
DEBUG_MSG("set WRITE, write_timeout = %f", write_timeout); |
205
|
4 |
55555 |
if (timeout < 0) { |
210
|
0 |
55559 |
DEBUG_MSG("select start, timeout is %f", timeout); |
214
|
136 |
55423 |
if(e->flags & WAIT_FOR_READ) { pollfd.events |= POLLIN; } |
215
|
55491 |
68 |
if(e->flags & WAIT_FOR_WRITE) { pollfd.events |= POLLOUT; } |
217
|
0 |
55559 |
DEBUG_MSG("poll returns %d", rc); |
218
|
1 |
55558 |
if(rc == 0) { |
219
|
0 |
1 |
DEBUG_MSG("%s", "timeout"); |
223
|
0 |
55558 |
if(rc < 0) { |
224
|
0 |
0 |
DEBUG_MSG("exception: %s", strerror(errno)); |
225
|
0 |
0 |
if( errno == EINTR ) { |
226
|
0 |
0 |
PERL_ASYNC_CHECK(); |
227
|
0 |
0 |
DEBUG_MSG("%s", "recieved interrupt. retry wait_for_event"); |
232
|
55558 |
0 |
if(self->ac && (pollfd.revents & POLLIN) != 0) { |
|
67 |
55491 |
if(self->ac && (pollfd.revents & POLLIN) != 0) { |
233
|
0 |
67 |
DEBUG_MSG("ready to %s", "read"); |
236
|
55552 |
6 |
if(self->ac && (pollfd.revents & (POLLOUT|POLLHUP)) != 0) { |
|
55491 |
61 |
if(self->ac && (pollfd.revents & (POLLOUT|POLLHUP)) != 0) { |
237
|
0 |
55491 |
DEBUG_MSG("ready to %s", "write"); |
240
|
1 |
55557 |
if((pollfd.revents & (POLLERR|POLLNVAL)) != 0) { |
241
|
0 |
1 |
DEBUG_MSG( |
|
0 |
0 |
DEBUG_MSG( |
|
0 |
0 |
DEBUG_MSG( |
248
|
0 |
55557 |
DEBUG_MSG("%s", "finish"); |
254
|
0 |
130 |
DEBUG_MSG("%s", "start"); |
255
|
197 |
68 |
while(self->ac && self->ac->replies.tail) { |
|
136 |
61 |
while(self->ac && self->ac->replies.tail) { |
257
|
135 |
1 |
if (res != WAIT_FOR_EVENT_OK) { |
258
|
0 |
1 |
DEBUG_MSG("error: %d", res); |
262
|
0 |
129 |
DEBUG_MSG("%s", "finish"); |
269
|
0 |
69 |
DEBUG_MSG("connected status = %d", status); |
270
|
1 |
68 |
if(status != REDIS_OK) { |
282
|
0 |
68 |
DEBUG_MSG("disconnected status = %d", status); |
292
|
0 |
69 |
DEBUG_MSG("%s", "start"); |
294
|
0 |
69 |
if(self->on_build_sock) { |
300
|
0 |
0 |
PUSHMARK(SP); |
303
|
0 |
0 |
FREETMPS; |
307
|
66 |
3 |
if(self->path) { |
313
|
0 |
69 |
if(ac == NULL) { |
314
|
0 |
0 |
DEBUG_MSG("%s", "allocation error"); |
317
|
0 |
69 |
if(ac->err) { |
318
|
0 |
0 |
DEBUG_MSG("connection error: %s", ac->errstr); |
332
|
69 |
0 |
if(self->cnx_timeout) { |
335
|
55423 |
68 |
while(!self->is_connected) { |
337
|
1 |
55422 |
if(self->ac == NULL) { |
344
|
0 |
55422 |
if(res != WAIT_FOR_EVENT_OK) { |
345
|
0 |
0 |
DEBUG_MSG("error: %d", res); |
359
|
68 |
0 |
if(self->on_connect){ |
361
|
0 |
68 |
PUSHMARK(SP); |
365
|
0 |
68 |
DEBUG_MSG("%s", "finish"); |
373
|
0 |
69 |
DEBUG_MSG("%s", "start"); |
380
|
3 |
66 |
if(self->reconnect == 0) { |
381
|
1 |
2 |
if(! __build_sock(self)) { |
382
|
0 |
1 |
if(self->path) { |
396
|
66 |
0 |
if(__build_sock(self)) { |
398
|
0 |
66 |
DEBUG_MSG("%s", "finish"); |
403
|
0 |
0 |
DEBUG_MSG("elapsed time:%f, reconnect:%lf", elapsed_time, self->reconnect); |
404
|
0 |
0 |
if( elapsed_time > self->reconnect) { |
405
|
0 |
0 |
if(self->path) { |
410
|
0 |
0 |
DEBUG_MSG("%s", "timed out"); |
414
|
0 |
0 |
DEBUG_MSG("%s", "failed to connect. wait..."); |
423
|
0 |
71 |
DEBUG_MSG("%s", "start"); |
424
|
71 |
0 |
if(self->is_connected && !self->ac && self->reconnect > 0) { |
|
3 |
68 |
if(self->is_connected && !self->ac && self->reconnect > 0) { |
|
0 |
3 |
if(self->is_connected && !self->ac && self->reconnect > 0) { |
425
|
0 |
0 |
DEBUG_MSG("%s", "connection not found. reconnect"); |
428
|
3 |
68 |
if(!self->ac) { |
429
|
0 |
3 |
DEBUG_MSG("%s", "Not connected to any server"); |
431
|
0 |
71 |
DEBUG_MSG("%s", "finish"); |
458
|
73 |
20 |
for (i = 0; i < reply->elements; i++) { |
460
|
3 |
70 |
if(collect_errors) { |
462
|
2 |
1 |
if(elem.result) { |
467
|
1 |
2 |
if(elem.error) { |
474
|
68 |
2 |
if(elem.result) { |
479
|
2 |
68 |
if(elem.error && !res.error) { |
|
2 |
0 |
if(elem.error && !res.error) { |
500
|
13 |
52 |
if (ret.error == NULL) { |
503
|
0 |
13 |
if (self->reconnect_on_error == NULL) { |
509
|
0 |
0 |
if( self->next_reconnect_on_error_at < 0 || |
|
0 |
0 |
if( self->next_reconnect_on_error_at < 0 || |
515
|
0 |
0 |
sv_ret = ret.result ? ret.result : &PL_sv_undef; |
519
|
0 |
0 |
PUSHMARK(SP); |
520
|
0 |
0 |
XPUSHs(sv_err); |
521
|
0 |
0 |
XPUSHs(sv_ret); |
522
|
0 |
0 |
XPUSHs(sv_cmd); |
529
|
0 |
0 |
if (count != 1) { |
532
|
0 |
0 |
_need_reconnect = POPi; |
535
|
0 |
0 |
FREETMPS; |
545
|
0 |
67 |
DEBUG_MSG("%p", (void*)privdata); |
546
|
66 |
1 |
if(reply) { |
548
|
0 |
66 |
if(cbt->custom_decode) { |
553
|
1 |
0 |
} else if(c->c.flags & REDIS_FREEING) { |
554
|
0 |
1 |
DEBUG_MSG("%s", "redis freeing"); |
557
|
0 |
0 |
DEBUG_MSG("connect error: %s", c->errstr); |
562
|
0 |
67 |
DEBUG_MSG("%s", "finish"); |
568
|
0 |
1 |
DEBUG_MSG("%p, %p", reply, privdata); |
569
|
1 |
0 |
if (reply) { |
580
|
0 |
1 |
if(cbt->custom_decode) { |
586
|
0 |
1 |
if(result.result == NULL) result.result = &PL_sv_undef; |
587
|
1 |
0 |
if(result.error == NULL) result.error = &PL_sv_undef; |
589
|
0 |
1 |
PUSHMARK(SP); |
590
|
0 |
1 |
XPUSHs(result.result); |
591
|
0 |
1 |
XPUSHs(result.error); |
596
|
1 |
0 |
FREETMPS; |
601
|
1 |
0 |
if (0 < self->reconnect && !self->need_reconnect |
|
1 |
0 |
if (0 < self->reconnect && !self->need_reconnect |
603
|
0 |
1 |
&& self->reconnect_on_error != NULL) { |
605
|
0 |
0 |
if(cbt->custom_decode) { |
620
|
0 |
0 |
if (c->c.flags & REDIS_FREEING) { |
621
|
0 |
0 |
DEBUG_MSG("%s", "redis freeing"); |
623
|
0 |
0 |
DEBUG_MSG("connect error: %s", c->errstr); |
636
|
0 |
0 |
if (c->c.flags & REDIS_FREEING) { |
641
|
0 |
0 |
DEBUG_MSG("error: %s", msg); |
644
|
0 |
0 |
PUSHMARK(SP); |
645
|
0 |
0 |
XPUSHs(result.result); |
646
|
0 |
0 |
XPUSHs(result.error); |
651
|
0 |
0 |
FREETMPS; |
666
|
0 |
0 |
DEBUG_MSG("%s", "start"); |
667
|
0 |
0 |
if(!cbt) { |
668
|
0 |
0 |
DEBUG_MSG("%s", "cbt is empty finished"); |
672
|
0 |
0 |
if (r) { |
683
|
0 |
0 |
if (strcasecmp(stype+pvariant,"subscribe") == 0) { |
684
|
0 |
0 |
DEBUG_MSG("%s %s %lld", r->element[0]->str, r->element[1]->str, r->element[2]->integer); |
687
|
0 |
0 |
} else if (strcasecmp(stype+pvariant,"unsubscribe") == 0) { |
688
|
0 |
0 |
DEBUG_MSG("%s %s %lld", r->element[0]->str, r->element[1]->str, r->element[2]->integer); |
693
|
0 |
0 |
DEBUG_MSG("%s %s", r->element[0]->str, r->element[1]->str); |
697
|
0 |
0 |
if(res.result == NULL) res.result = &PL_sv_undef; |
698
|
0 |
0 |
if(res.error == NULL) res.error = &PL_sv_undef; |
700
|
0 |
0 |
PUSHMARK(SP); |
701
|
0 |
0 |
XPUSHs(res.result); |
702
|
0 |
0 |
XPUSHs(res.error); |
707
|
0 |
0 |
FREETMPS; |
710
|
0 |
0 |
DEBUG_MSG("connect error: %s", c->errstr); |
714
|
0 |
0 |
if(is_need_free) { |
716
|
0 |
0 |
DEBUG_MSG("destroy %p", cbt); |
717
|
0 |
0 |
if(cbt->cb) { |
723
|
0 |
0 |
DEBUG_MSG("%s", "finish"); |
729
|
0 |
0 |
if(!self->ac) { |
746
|
0 |
0 |
if(_wait_all_responses(self) == WAIT_FOR_EVENT_OK) { |
747
|
0 |
0 |
DEBUG_MSG("%s", "wait_all_responses ok"); |
748
|
0 |
0 |
if(cbt->ret.result || cbt->ret.error) Safefree(cbt); |
|
0 |
0 |
if(cbt->ret.result || cbt->ret.error) Safefree(cbt); |
750
|
0 |
0 |
DEBUG_MSG("%s", "wait_all_responses not ok"); |
751
|
0 |
0 |
if(cbt->ret.result || cbt->ret.error) Safefree(cbt); |
|
0 |
0 |
if(cbt->ret.result || cbt->ret.error) Safefree(cbt); |
753
|
0 |
0 |
DEBUG_MSG("%s", "finish"); |
760
|
0 |
68 |
DEBUG_MSG("start %s", argv[0]); |
762
|
0 |
68 |
DEBUG_MSG("pid check: previous pid is %d, now %d", self->pid, getpid()); |
763
|
0 |
68 |
if(self->pid != getpid()) { |
764
|
0 |
0 |
DEBUG_MSG("%s", "pid changed. create new connection.."); |
768
|
0 |
68 |
if(EQUALS_COMMAND(argvlen[0], argv[0], "MULTI")) { |
|
0 |
0 |
if(EQUALS_COMMAND(argvlen[0], argv[0], "MULTI")) { |
770
|
1 |
67 |
} else if(EQUALS_COMMAND(argvlen[0], argv[0], "EXEC") || |
|
0 |
1 |
} else if(EQUALS_COMMAND(argvlen[0], argv[0], "EXEC") || |
|
0 |
67 |
} else if(EQUALS_COMMAND(argvlen[0], argv[0], "EXEC") || |
771
|
0 |
0 |
EQUALS_COMMAND(argvlen[0], argv[0], "DISCARD")) { |
773
|
0 |
67 |
} else if(EQUALS_COMMAND(argvlen[0], argv[0], "WATCH")) { |
|
0 |
0 |
} else if(EQUALS_COMMAND(argvlen[0], argv[0], "WATCH")) { |
775
|
0 |
67 |
} else if(EQUALS_COMMAND(argvlen[0], argv[0], "UNWATCH")) { |
|
0 |
0 |
} else if(EQUALS_COMMAND(argvlen[0], argv[0], "UNWATCH")) { |
779
|
1 |
67 |
if(cb) { |
796
|
65 |
2 |
int i, cnt = (self->reconnect == 0 ? 1 : 2); |
798
|
67 |
0 |
for(i = 0; i < cnt; i++) { |
807
|
0 |
67 |
DEBUG_MSG("%s", "send command in sync mode"); |
812
|
0 |
67 |
DEBUG_MSG("%s", "waiting response"); |
814
|
66 |
1 |
if(res == WAIT_FOR_EVENT_OK && self->need_reconnect == 0) { |
|
66 |
0 |
if(res == WAIT_FOR_EVENT_OK && self->need_reconnect == 0) { |
816
|
65 |
1 |
if (1 < cnt - i) { |
821
|
0 |
65 |
if (_need_reconnect) { |
825
|
66 |
0 |
if (!_need_reconnect) { |
827
|
11 |
55 |
if(cbt->ret.result || cbt->ret.error) Safefree(cbt); |
|
11 |
0 |
if(cbt->ret.result || cbt->ret.error) Safefree(cbt); |
828
|
0 |
66 |
DEBUG_MSG("finish %s", argv[0]); |
833
|
0 |
1 |
if( res == WAIT_FOR_EVENT_READ_TIMEOUT ) break; |
835
|
0 |
0 |
if(self->flags & (FLAG_INSIDE_TRANSACTION | FLAG_INSIDE_WATCH)) { |
837
|
0 |
0 |
DEBUG_MSG("error: %s", msg); |
843
|
0 |
0 |
if(!self->ac) { |
845
|
0 |
0 |
DEBUG_MSG("error: %s", msg); |
851
|
0 |
1 |
if( res == WAIT_FOR_EVENT_OK && (cbt->ret.result || cbt->ret.error) ) Safefree(cbt); |
|
0 |
0 |
if( res == WAIT_FOR_EVENT_OK && (cbt->ret.result || cbt->ret.error) ) Safefree(cbt); |
|
0 |
0 |
if( res == WAIT_FOR_EVENT_OK && (cbt->ret.result || cbt->ret.error) ) Safefree(cbt); |
854
|
1 |
0 |
if(res == WAIT_FOR_EVENT_READ_TIMEOUT || res == WAIT_FOR_EVENT_WRITE_TIMEOUT) { |
857
|
0 |
1 |
DEBUG_MSG("error: %s", self->error); |
861
|
0 |
0 |
if(!self->ac) { |
863
|
0 |
0 |
DEBUG_MSG("error: %s", msg); |
868
|
0 |
1 |
DEBUG_MSG("Finish %s", argv[0]); |
880
|
0 |
0 |
if(reply->type == REDIS_REPLY_STRING || |
888
|
0 |
0 |
while(len != 0) { |
892
|
0 |
0 |
if(line == NULL) { |
898
|
0 |
0 |
if(str[0] != '#' && sep != NULL) { |
|
0 |
0 |
if(str[0] != '#' && sep != NULL) { |
905
|
0 |
0 |
if (ret == NULL) { |
910
|
0 |
0 |
if(line == NULL) { |
933
|
0 |
70 |
DEBUG_MSG("%s", "start"); |
940
|
0 |
70 |
DEBUG_MSG("return %p", ST(0)); |
1075
|
0 |
0 |
RETVAL = self->ac ? self->ac->c.fd : 0; |
1138
|
0 |
0 |
if ( -1 < val ) { |
1162
|
0 |
70 |
DEBUG_MSG("%s", "start"); |
1163
|
62 |
8 |
if (self->ac) { |
1164
|
0 |
62 |
DEBUG_MSG("%s", "free ac"); |
1170
|
4 |
66 |
if(self->hostname) { |
1171
|
0 |
4 |
DEBUG_MSG("%s", "free hostname"); |
1176
|
66 |
4 |
if(self->path) { |
1177
|
0 |
66 |
DEBUG_MSG("%s", "free path"); |
1182
|
70 |
0 |
if(self->error) { |
1183
|
0 |
70 |
DEBUG_MSG("%s", "free error"); |
1188
|
70 |
0 |
if(self->on_connect) { |
1189
|
0 |
70 |
DEBUG_MSG("%s", "free on_connect"); |
1194
|
0 |
70 |
if(self->on_build_sock) { |
1195
|
0 |
0 |
DEBUG_MSG("%s", "free on_build_sock"); |
1200
|
70 |
0 |
if(self->data) { |
1201
|
0 |
70 |
DEBUG_MSG("%s", "free data"); |
1206
|
0 |
70 |
if(self->reconnect_on_error) { |
1207
|
0 |
0 |
DEBUG_MSG("%s", "free reconnect_on_error"); |
1212
|
0 |
70 |
DEBUG_MSG("%s", "finish"); |
1221
|
0 |
4 |
if(self->hostname) { |
1226
|
0 |
4 |
if(self->path) { |
1231
|
4 |
0 |
if(hostname) { |
1243
|
0 |
66 |
if(self->hostname) { |
1248
|
0 |
66 |
if(self->path) { |
1253
|
66 |
0 |
if(path) { |
1272
|
0 |
1 |
if(res != WAIT_FOR_EVENT_OK) { |
1276
|
1 |
0 |
if (0 < self->reconnect && self->need_reconnect) { |
|
0 |
1 |
if (0 < self->reconnect && self->need_reconnect) { |
1289
|
0 |
0 |
if(res != WAIT_FOR_EVENT_OK) { |
1293
|
0 |
0 |
if (0 < self->reconnect && self->need_reconnect) { |
|
0 |
0 |
if (0 < self->reconnect && self->need_reconnect) { |
1313
|
0 |
68 |
if(!self->ac) { |
1318
|
1 |
67 |
if (SvROK(cb) && SvTYPE(SvRV(cb)) == SVt_PVCV) { |
|
1 |
0 |
if (SvROK(cb) && SvTYPE(SvRV(cb)) == SVt_PVCV) { |
1324
|
0 |
68 |
Newx(argv, sizeof(char*) * argc, char*); |
1325
|
0 |
68 |
Newx(argvlen, sizeof(size_t) * argc, size_t); |
1327
|
136 |
68 |
for (i = 0; i < argc; i++) { |
1328
|
0 |
136 |
if(!sv_utf8_downgrade(ST(i + 1), 1)) { |
1331
|
136 |
0 |
argv[i] = SvPV(ST(i + 1), len); |
1336
|
1 |
67 |
if(cb && EQUALS_COMMAND(argvlen[0], argv[0], "EXEC")) |
|
1 |
0 |
if(cb && EQUALS_COMMAND(argvlen[0], argv[0], "EXEC")) |
|
1 |
0 |
if(cb && EQUALS_COMMAND(argvlen[0], argv[0], "EXEC")) |
1344
|
56 |
12 |
ST(0) = ret.result ? ret.result : &PL_sv_undef; |
1345
|
14 |
54 |
ST(1) = ret.error ? ret.error : &PL_sv_undef; |
1354
|
0 |
0 |
DEBUG_MSG("%s", "start QUIT"); |
1355
|
0 |
0 |
if(self->ac) { |
1360
|
0 |
0 |
DEBUG_MSG("%s", "finish. there is no connection."); |
1370
|
0 |
0 |
DEBUG_MSG("%s", "start SHUTDOWN"); |
1371
|
0 |
0 |
if(self->ac) { |
1381
|
0 |
0 |
DEBUG_MSG("%s", "redis server has alread shutdown"); |
1399
|
0 |
0 |
if(!self->ac) { |
1404
|
0 |
0 |
if (SvROK(cb) && SvTYPE(SvRV(cb)) == SVt_PVCV) { |
|
0 |
0 |
if (SvROK(cb) && SvTYPE(SvRV(cb)) == SVt_PVCV) { |
1410
|
0 |
0 |
Newx(argv, sizeof(char*) * argc, char*); |
1411
|
0 |
0 |
Newx(argvlen, sizeof(size_t) * argc, size_t); |
1415
|
0 |
0 |
for (i = 1; i < argc; i++) { |
1416
|
0 |
0 |
argv[i] = SvPV(ST(i), len); |
1424
|
0 |
0 |
ST(0) = ret.result ? ret.result : &PL_sv_undef; |
1425
|
0 |
0 |
ST(1) = ret.error ? ret.error : &PL_sv_undef; |
1442
|
3 |
0 |
if(!self->ac) { |
1450
|
0 |
0 |
if (SvROK(cb) && SvTYPE(SvRV(cb)) == SVt_PVCV) { |
|
0 |
0 |
if (SvROK(cb) && SvTYPE(SvRV(cb)) == SVt_PVCV) { |
1456
|
0 |
0 |
Newx(argv, sizeof(char*) * argc, char*); |
1457
|
0 |
0 |
Newx(argvlen, sizeof(size_t) * argc, size_t); |
1461
|
0 |
0 |
for (i = 1; i < argc; i++) { |
1462
|
0 |
0 |
argv[i] = SvPV(ST(i), len); |
1470
|
0 |
0 |
ST(0) = ret.result ? ret.result : &PL_sv_undef; |
1471
|
0 |
0 |
ST(1) = ret.error ? ret.error : &PL_sv_undef; |
1488
|
0 |
0 |
int cnt = (self->reconnect == 0 ? 1 : 2); |
1490
|
0 |
0 |
DEBUG_MSG("%s", "start"); |
1493
|
0 |
0 |
if(!self->ac) { |
1497
|
0 |
0 |
if(!self->is_subscriber) { |
1501
|
0 |
0 |
if (SvROK(cb) && SvTYPE(SvRV(cb)) == SVt_PVCV) { |
|
0 |
0 |
if (SvROK(cb) && SvTYPE(SvRV(cb)) == SVt_PVCV) { |
1507
|
0 |
0 |
Newx(argv, sizeof(char*) * argc, char*); |
1508
|
0 |
0 |
Newx(argvlen, sizeof(size_t) * argc, size_t); |
1510
|
0 |
0 |
for (i = 0; i < argc; i++) { |
1511
|
0 |
0 |
argv[i] = SvPV(ST(i+1), len); |
1513
|
0 |
0 |
DEBUG_MSG("argv[%d] = %s", i, argv[i]); |
1516
|
0 |
0 |
for(i = 0; i < cnt; i++) { |
1518
|
0 |
0 |
if (strcasecmp(argv[0]+pvariant,"unsubscribe") != 0) { |
1519
|
0 |
0 |
DEBUG_MSG("%s", "command is not unsubscribe"); |
1524
|
0 |
0 |
DEBUG_MSG("%s", "command is unsubscribe"); |
1527
|
0 |
0 |
redisAsyncCommandArgv( |
1532
|
0 |
0 |
while(self->expected_subs > 0 && wait_for_event(self, self->read_timeout, self->write_timeout) == WAIT_FOR_EVENT_OK) ; |
|
0 |
0 |
while(self->expected_subs > 0 && wait_for_event(self, self->read_timeout, self->write_timeout) == WAIT_FOR_EVENT_OK) ; |
1533
|
0 |
0 |
if(self->expected_subs == 0) break; |
1535
|
0 |
0 |
if(!self->ac) { |
1544
|
0 |
0 |
DEBUG_MSG("%s", "finish"); |
1552
|
0 |
0 |
int i, cnt = (self->reconnect == 0 ? 1 : 2); |
1554
|
0 |
0 |
DEBUG_MSG("%s", "start"); |
1556
|
0 |
0 |
for(i = 0; i < cnt; i++) { |
1557
|
0 |
0 |
while((res = wait_for_event(self, timeout, timeout)) == WAIT_FOR_EVENT_OK) ; |
1558
|
0 |
0 |
if(res == WAIT_FOR_EVENT_READ_TIMEOUT || res == WAIT_FOR_EVENT_WRITE_TIMEOUT) break; |
1560
|
0 |
0 |
if(!self->ac) { |
1564
|
0 |
0 |
if(res == WAIT_FOR_EVENT_EXCEPTION) { |
1565
|
0 |
0 |
if(!self->ac) { |
1566
|
0 |
0 |
DEBUG_MSG("%s", "Connection not found"); |
1568
|
0 |
0 |
} else if(self->ac->c.err == REDIS_ERR_EOF) { |
1569
|
0 |
0 |
DEBUG_MSG("hiredis returns error: %s", self->ac->c.errstr); |
1572
|
0 |
0 |
DEBUG_MSG("hiredis returns error: %s", self->ac->c.errstr); |
1578
|
0 |
0 |
DEBUG_MSG("finish with %d", res); |
1586
|
0 |
0 |
DEBUG_MSG("%s", "start"); |
1588
|
0 |
0 |
DEBUG_MSG("%s", "finish"); |