mirror of
https://github.com/fluencelabs/redis
synced 2025-06-18 03:31:21 +00:00
ae.c now supports multiple polling API modules, even if only ae_select.c is implemented currently. Also adding and removing an event is now O(1).
This commit is contained in:
10
redis.c
10
redis.c
@ -1912,7 +1912,7 @@ static redisClient *createClient(int fd) {
|
||||
listSetFreeMethod(c->reply,decrRefCount);
|
||||
listSetDupMethod(c->reply,dupClientReplyValue);
|
||||
if (aeCreateFileEvent(server.el, c->fd, AE_READABLE,
|
||||
readQueryFromClient, c, NULL) == AE_ERR) {
|
||||
readQueryFromClient, c) == AE_ERR) {
|
||||
freeClient(c);
|
||||
return NULL;
|
||||
}
|
||||
@ -1925,7 +1925,7 @@ static void addReply(redisClient *c, robj *obj) {
|
||||
(c->replstate == REDIS_REPL_NONE ||
|
||||
c->replstate == REDIS_REPL_ONLINE) &&
|
||||
aeCreateFileEvent(server.el, c->fd, AE_WRITABLE,
|
||||
sendReplyToClient, c, NULL) == AE_ERR) return;
|
||||
sendReplyToClient, c) == AE_ERR) return;
|
||||
if (obj->encoding != REDIS_ENCODING_RAW) {
|
||||
obj = getDecodedObject(obj);
|
||||
} else {
|
||||
@ -5304,7 +5304,7 @@ static void sendBulkToSlave(aeEventLoop *el, int fd, void *privdata, int mask) {
|
||||
aeDeleteFileEvent(server.el,slave->fd,AE_WRITABLE);
|
||||
slave->replstate = REDIS_REPL_ONLINE;
|
||||
if (aeCreateFileEvent(server.el, slave->fd, AE_WRITABLE,
|
||||
sendReplyToClient, slave, NULL) == AE_ERR) {
|
||||
sendReplyToClient, slave) == AE_ERR) {
|
||||
freeClient(slave);
|
||||
return;
|
||||
}
|
||||
@ -5348,7 +5348,7 @@ static void updateSlavesWaitingBgsave(int bgsaveerr) {
|
||||
slave->repldbsize = buf.st_size;
|
||||
slave->replstate = REDIS_REPL_SEND_BULK;
|
||||
aeDeleteFileEvent(server.el,slave->fd,AE_WRITABLE);
|
||||
if (aeCreateFileEvent(server.el, slave->fd, AE_WRITABLE, sendBulkToSlave, slave, NULL) == AE_ERR) {
|
||||
if (aeCreateFileEvent(server.el, slave->fd, AE_WRITABLE, sendBulkToSlave, slave) == AE_ERR) {
|
||||
freeClient(slave);
|
||||
continue;
|
||||
}
|
||||
@ -5834,7 +5834,7 @@ int main(int argc, char **argv) {
|
||||
redisLog(REDIS_NOTICE,"DB loaded from disk");
|
||||
}
|
||||
if (aeCreateFileEvent(server.el, server.fd, AE_READABLE,
|
||||
acceptHandler, NULL, NULL) == AE_ERR) oom("creating file event");
|
||||
acceptHandler, NULL) == AE_ERR) oom("creating file event");
|
||||
redisLog(REDIS_NOTICE,"The server is now ready to accept connections on port %d", server.port);
|
||||
aeMain(server.el);
|
||||
aeDeleteEventLoop(server.el);
|
||||
|
Reference in New Issue
Block a user