]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[MINOR] stats: factorize many chunk_printf()
authorWilly Tarreau <w@1wt.eu>
Mon, 1 Jan 2007 21:01:43 +0000 (22:01 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 1 Jan 2007 21:01:43 +0000 (22:01 +0100)
Improve code size, speed and readability by factoring many
calls to chunk_printf().

src/proto_http.c

index 4d6076f004ef7b5a629d539baf0584b4ba865a46..75fd1525af2c2d2052eceb461e3faa49f59e3735 100644 (file)
@@ -3047,37 +3047,28 @@ int produce_content_stats_proxy(struct session *s, struct proxy *px)
        case DATA_ST_PX_FE:
                /* print the frontend */
                if (px->cap & PR_CAP_FE) {
-                       /* name, queue */
                        chunk_printf(&msg, sizeof(trash),
-                                    "<tr align=center class=\"frontend\"><td>Frontend</td><td colspan=2></td>");
-
-                       /* sessions : current, max, limit, cumul. */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right>%d</td><td align=right>%d</td><td align=right>%d</td><td align=right>%d</td>",
-                                    px->feconn, px->feconn_max, px->maxconn, px->cum_feconn);
-
-                       /* bytes : in, out */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right></td><td align=right></td>");
-
-                       /* denied: req, resp */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right>%d</td><td align=right>%d</td>",
-                                    px->denied_req, px->denied_resp);
-
-                       /* errors : request, connect, response */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right>%d</td><td align=right></td><td align=right></td>",
-                                    px->failed_req);
-
-                       /* server status : reflect backend status */
-                       chunk_printf(&msg, sizeof(trash), "<td align=center>%s</td>",
+                                    /* name, queue */
+                                    "<tr align=center class=\"frontend\"><td>Frontend</td><td colspan=2></td>"
+                                    /* sessions : current, max, limit, cumul. */
+                                    "<td align=right>%d</td><td align=right>%d</td><td align=right>%d</td><td align=right>%d</td>"
+                                    /* bytes : in, out */
+                                    "<td align=right></td><td align=right></td>"
+                                    /* denied: req, resp */
+                                    "<td align=right>%d</td><td align=right>%d</td>"
+                                    /* errors : request, connect, response */
+                                    "<td align=right>%d</td><td align=right></td><td align=right></td>"
+                                    /* server status : reflect backend status */
+                                    "<td align=center>%s</td>"
+                                    /* rest of server: nothing */
+                                    "<td align=center colspan=5></td></tr>"
+                                    "",
+                                    px->feconn, px->feconn_max, px->maxconn, px->cum_feconn,
+                                    px->denied_req, px->denied_resp,
+                                    px->failed_req,
                                     px->state == PR_STRUN ? "OPEN" :
                                     px->state == PR_STIDLE ? "FULL" : "STOP");
 
-                       /* rest of server: nothing */
-                       chunk_printf(&msg, sizeof(trash), "<td align=center colspan=5></td></tr>");
-
                        if (buffer_write_chunk(rep, &msg) != 0)
                                return 0;
                }
@@ -3108,36 +3099,27 @@ int produce_content_stats_proxy(struct session *s, struct proxy *px)
                                else
                                        sv_state = 0; /* DOWN */
 
-                       /* name */
                        chunk_printf(&msg, sizeof(trash),
-                                    "<tr align=\"center\" class=\"%s%d\"><td>%s</td>",
+                                    /* name */
+                                    "<tr align=\"center\" class=\"%s%d\"><td>%s</td>"
+                                    /* queue : current, max */
+                                    "<td align=right>%d</td><td align=right>%d</td>"
+                                    /* sessions : current, max, limit, cumul */
+                                    "<td align=right>%d</td><td align=right>%d</td><td align=right>%s</td><td align=right>%d</td>"
+                                    /* bytes : in, out */
+                                    "<td align=right></td><td align=right></td>"
+                                    /* denied: req, resp */
+                                    "<td align=right></td><td align=right>%d</td>"
+                                    /* errors : request, connect, response */
+                                    "<td align=right></td><td align=right>%d</td><td align=right>%d</td>\n"
+                                    "",
                                     (sv->state & SRV_BACKUP) ? "active" : "backup",
-                                    sv_state, sv->id);
-
-                       /* queue : current, max */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right>%d</td><td align=right>%d</td>",
-                                    sv->nbpend, sv->nbpend_max);
-
-                       /* sessions : current, max, limit, cumul */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right>%d</td><td align=right>%d</td><td align=right>%s</td><td align=right>%d</td>",
-                                    sv->cur_sess, sv->cur_sess_max, sv->maxconn ? ultoa(sv->maxconn) : "-", sv->cum_sess);
-
-                       /* bytes : in, out */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right></td><td align=right></td>");
-
-                       /* denied: req, resp */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right></td><td align=right>%d</td>",
-                                    sv->failed_secu);
-
-                       /* errors : request, connect, response */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right></td><td align=right>%d</td><td align=right>%d</td>\n",
+                                    sv_state, sv->id,
+                                    sv->nbpend, sv->nbpend_max,
+                                    sv->cur_sess, sv->cur_sess_max, sv->maxconn ? ultoa(sv->maxconn) : "-", sv->cum_sess,
+                                    sv->failed_secu,
                                     sv->failed_conns, sv->failed_resp);
-
+                                    
                        /* status */
                        chunk_printf(&msg, sizeof(trash), "<td nowrap>");
                        chunk_printf(&msg, sizeof(trash),
@@ -3145,11 +3127,13 @@ int produce_content_stats_proxy(struct session *s, struct proxy *px)
                                     (sv->state & SRV_RUNNING) ? (sv->health - sv->rise + 1) : (sv->health),
                                     (sv->state & SRV_RUNNING) ? (sv->fall) : (sv->rise));
 
-                       /* weight */
-                       chunk_printf(&msg, sizeof(trash), "<td>%d</td>", sv->uweight+1);
-
-                       /* act, bck */
-                       chunk_printf(&msg, sizeof(trash), "<td>%s</td><td>%s</td>",
+                       chunk_printf(&msg, sizeof(trash),
+                                    /* weight */
+                                    "</td><td>%d</td>"
+                                    /* act, bck */
+                                    "<td>%s</td><td>%s</td>"
+                                    "",
+                                    sv->uweight+1,
                                     (sv->state & SRV_BACKUP) ? "-" : "Y",
                                     (sv->state & SRV_BACKUP) ? "Y" : "-");
 
@@ -3174,48 +3158,35 @@ int produce_content_stats_proxy(struct session *s, struct proxy *px)
        case DATA_ST_PX_BE:
                /* print the backend */
                if (px->cap & PR_CAP_BE) {
-                       /* name */
                        chunk_printf(&msg, sizeof(trash),
-                                    "<tr align=center class=\"backend\"><td>Backend</td>");
-
-                       /* queue : current, max */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right>%d</td><td align=right>%d</td>",
-                                    px->nbpend /* or px->totpend ? */, px->nbpend_max);
-
-                       /* sessions : current, max, limit, cumul. */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right>%d</td><td align=right>%d</td><td align=right>%d</td><td align=right>%d</td>",
-                                    px->beconn, px->beconn_max, px->fullconn, px->cum_beconn);
-
-                       /* bytes : in, out */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right></td><td align=right></td>");
-
-                       /* denied: req, resp */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right>%d</td><td align=right>%d</td>",
-                                    px->denied_req, px->denied_resp);
-
-                       /* errors : request, connect, response */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=right></td><td align=right>%d</td><td align=right>%d</td>\n",
-                                    px->failed_conns, px->failed_resp);
-
-                       /* server status : reflect backend status (up/down) : we display UP
-                        * if the backend has known working servers or if it has no server at
-                        * all (eg: for stats). Tthen we display the total weight, number of
-                        * active and backups. */
-                       chunk_printf(&msg, sizeof(trash),
-                                    "<td align=center>%s</td>"
-                                    "<td align=center>%d</td>"
-                                    "<td align=center>%d</td><td align=center>%d</td>",
+                                    /* name */
+                                    "<tr align=center class=\"backend\"><td>Backend</td>"
+                                    /* queue : current, max */
+                                    "<td align=right>%d</td><td align=right>%d</td>"
+                                    /* sessions : current, max, limit, cumul. */
+                                    "<td align=right>%d</td><td align=right>%d</td><td align=right>%d</td><td align=right>%d</td>"
+                                    /* bytes : in, out */
+                                    "<td align=right></td><td align=right></td>"
+                                    /* denied: req, resp */
+                                    "<td align=right>%d</td><td align=right>%d</td>"
+                                    /* errors : request, connect, response */
+                                    "<td align=right></td><td align=right>%d</td><td align=right>%d</td>\n"
+                                    /* server status : reflect backend status (up/down) : we display UP
+                                     * if the backend has known working servers or if it has no server at
+                                     * all (eg: for stats). Tthen we display the total weight, number of
+                                     * active and backups. */
+                                    "<td align=center>%s</td><td align=center>%d</td>"
+                                    "<td align=center>%d</td><td align=center>%d</td>"
+                                    /* rest of server: nothing */
+                                    "<td align=center colspan=2></td></tr>"
+                                    "",
+                                    px->nbpend /* or px->totpend ? */, px->nbpend_max,
+                                    px->beconn, px->beconn_max, px->fullconn, px->cum_beconn,
+                                    px->denied_req, px->denied_resp,
+                                    px->failed_conns, px->failed_resp,
                                     (px->srv_map_sz > 0 || !px->srv) ? "UP" : "DOWN",
                                     px->srv_map_sz, px->srv_act, px->srv_bck);
 
-                       /* rest of server: nothing */
-                       chunk_printf(&msg, sizeof(trash), "<td align=center colspan=2></td></tr>");
-
                        if (buffer_write_chunk(rep, &msg) != 0)
                                return 0;
                }