createClient上次執行了一半,此次一口氣說完剩下的。 node
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 函數
c->fd = fd;
//記錄句柄號
//自定義檢查點: 1 2 3
c->name = NULL;
//自定義檢查點: 1 2 3
c->bufpos = 0;
//自定義檢查點: 1 2 3
c->querybuf = sdsempty();
//自定義檢查點: 1 2 3
c->querybuf_peak = 0;
//自定義檢查點: 1 2 3
c->reqtype = 0;
//自定義檢查點: 1 2 3
c->argc = 0;
//自定義檢查點: 1 2 3
c->argv = NULL;
//自定義檢查點: 1 2 3
c->cmd = c->lastcmd = NULL;
//自定義檢查點: 1 2 3
c->multibulklen = 0;
//自定義檢查點: 1 2 3
c->bulklen = -1;
//自定義檢查點: 1 2 3
c->sentlen = 0;
//自定義檢查點: 1 2 3
c->flags = 0;
//自定義檢查點: 1 2 3
c->ctime = c->lastinteraction = server.unixtime;
//自定義檢查點: 1 2 3
c->authenticated = 0;
//自定義檢查點: 1 2 3
c->replstate = REDIS_REPL_NONE;
//自定義檢查點: 1 2 3 unix
c->reploff = 0;
//自定義檢查點: 1 2 3
c->repl_ack_off = 0;
//自定義檢查點: 1 2 3
c->repl_ack_time = 0;
//自定義檢查點: 1 2 3
c->slave_listening_port = 0;
//自定義檢查點: 1 2 3
c->reply = listCreate();
//自定義檢查點: 1 2 3
c->reply_bytes = 0;
//自定義檢查點: 1 2 3
c->obuf_soft_limit_reached_time = 0;
//自定義檢查點: 1 2 3
listSetFreeMethod(c->reply,decrRefCountVoid);
//自定義檢查點: 1 2 3
listSetDupMethod(c->reply,dupClientReplyValue);
//自定義檢查點: 1 2 3
c->bpop.keys = dictCreate(&setDictType,NULL);
//自定義檢查點: 1 2 3
c->bpop.timeout = 0;
//自定義檢查點: 1 2 3
c->bpop.target = NULL;
//自定義檢查點: 1 2 3
c->io_keys = listCreate();
//自定義檢查點: 1 2 3
c->watched_keys = listCreate();
//自定義檢查點: 1 2 3
listSetFreeMethod(c->io_keys,decrRefCountVoid);
//自定義檢查點: 1 2 3
c->pubsub_channels = dictCreate(&setDictType,NULL);
//自定義檢查點: 1 2 3
c->pubsub_patterns = listCreate();
//自定義檢查點: 1 2 3
listSetFreeMethod(c->pubsub_patterns,decrRefCountVoid);
//自定義檢查點: 1 2 3
listSetMatchMethod(c->pubsub_patterns,listMatchObjects);
//自定義檢查點: 1 2 3 server
這些都沒什麼好說的。 get
後面的代碼是: cmd
listAddNodeTail,咱們來研究代碼,發現是構造一個listnode類型節點 qt
這個node.value爲C it
而後將這個node增長到server.clients中去 io
~~~~~~~~~~~~~~ ast
最後看一個函數initClientMultiState很簡單。
至此,createClient函數結束,回到acceptCommonHandler。
這個函數剩下的代碼比較簡單,就不說了。
這樣,函數acceptCommonHandler就結束了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回到acceptTcpHandler函數,這個函數也執行完了。
因而就回到了aeProcessEvents
預知後事如何,且聽下回分解!