本文想要完成對twemproxy發(fā)送流程——msg_send的探索,對于twemproxy發(fā)送流程的數(shù)據(jù)結(jié)構(gòu)已經(jīng)在《twemproxy接收流程探索——剖析twemproxy代碼正編》介紹過了,msg_send和msg_recv的流程大致類似。請在閱讀代碼時,查看注釋,英文注釋是作者對它的代碼的注解,中文注釋是我自己的感悟。
函數(shù)msg_send
1 rstatus_t 2 msg_send(struct context *ctx, struct conn *conn) 3 { 4 rstatus_t status; 5 struct msg *msg; 6 /*表示活躍的發(fā)送狀態(tài)*/ 7 ASSERT(conn->send_active); 8 /*表示準(zhǔn)備發(fā)送*/ 9 conn->send_ready = 1;10 do {11 /*獲取下一次發(fā)送的msg開頭*/12 msg = conn->send_next(ctx, conn);13 if (msg == NULL) {14 /* nothing to send */15 return NC_OK;16 }17 &nb