本文想要完成对twemproxy发送流程——msg_send的探索,对于twemproxy发送流程的数据结构已经在《twemproxy接收流程探索——剖析twemproxy代码正编》介绍过了,msg_send和msg_recv的流程大致类似。请在阅读代码时,查看注释,英文注释是作者对它的代码的注解,中文注释是我自己的感悟。
函数msg_send
1 rstatus_t 2 msg_send(struct context *ctx, struct conn *conn) 3 { 4 rstatus_t status; 5 struct msg *msg; 6 /*表示活跃的发送状态*/ 7 ASSERT(conn->send_active); 8 /*表示准备发送*/ 9 conn->send_ready = 1;10 do {11 /*获取下一次发送的msg开头*/12 msg = conn->send_next(ctx, conn);13 if (msg == NULL) {14 /* nothing to send */15 return NC_OK;16 }17 &nb