Forráskód Böngészése

Prepare data for server status (Step 17/?) (See #243)[B

bel2125 8 éve
szülő
commit
7a5bbf5de6
3 módosított fájl, 28 hozzáadás és 16 törlés
  1. 17 12
      src/civetweb.c
  2. 0 4
      src/main.c
  3. 11 0
      test/page_status.lua

+ 17 - 12
src/civetweb.c

@@ -15903,6 +15903,9 @@ mg_get_context_info_impl(const struct mg_context *ctx, char *buffer, int buflen)
 #endif
 	struct mg_memory_stat *ms = get_memory_stat((struct mg_context *)ctx);
 
+	const char *eoobj = "}";
+	int reserved_len = (int)strlen(eoobj) + (int)strlen(eol);
+
 	if ((buffer == NULL) || (buflen < 10)) {
 		buflen = 0;
 	}
@@ -15920,10 +15923,10 @@ mg_get_context_info_impl(const struct mg_context *ctx, char *buffer, int buflen)
 		            block,
 		            sizeof(block),
 		            "\"memory\" : {%s"
-		            "\"blocks\" : %i%s"
-		            "\"used\" : %" INT64_FMT "%s"
+		            "\"blocks\" : %i,%s"
+		            "\"used\" : %" INT64_FMT ",%s"
 		            "\"maxUsed\" : %" INT64_FMT "%s"
-		            "},%s",
+		            "}%s%s",
 		            eol,
 		            ms->blockCount,
 		            eol,
@@ -15931,10 +15934,11 @@ mg_get_context_info_impl(const struct mg_context *ctx, char *buffer, int buflen)
 		            eol,
 		            ms->maxMemUsed,
 		            eol,
+		            (ctx ? "," : ""),
 		            eol);
 
 		context_info_length += (int)strlen(block);
-		if (context_info_length < buflen) {
+		if (context_info_length + reserved_len < buflen) {
 			strcat(buffer, block);
 		}
 	}
@@ -15947,8 +15951,8 @@ mg_get_context_info_impl(const struct mg_context *ctx, char *buffer, int buflen)
 		            block,
 		            sizeof(block),
 		            "\"connections\" : {%s"
-		            "\"active\" : %i%s"
-		            "\"maxActive\" : %i%s"
+		            "\"active\" : %i,%s"
+		            "\"maxActive\" : %i,%s"
 		            "\"total\" : %" INT64_FMT "%s"
 		            "},%s",
 		            eol,
@@ -15961,7 +15965,7 @@ mg_get_context_info_impl(const struct mg_context *ctx, char *buffer, int buflen)
 		            eol);
 
 		context_info_length += (int)strlen(block);
-		if (context_info_length < buflen) {
+		if (context_info_length + reserved_len < buflen) {
 			strcat(buffer, block);
 		}
 	}
@@ -15974,22 +15978,23 @@ mg_get_context_info_impl(const struct mg_context *ctx, char *buffer, int buflen)
 		            sizeof(block),
 		            "\"requests\" : {%s"
 		            "\"total\" : %" INT64_FMT "%s"
-		            "},%s",
+		            "}%s",
 		            eol,
 		            ctx->total_requests,
 		            eol,
 		            eol);
 
 		context_info_length += (int)strlen(block);
-		if (context_info_length < buflen) {
+		if (context_info_length + reserved_len < buflen) {
 			strcat(buffer, block);
 		}
 	}
 
 	if ((buflen > 0) && buffer && buffer[0]) {
-		char *p = strrchr(buffer, ',');
-		if (p) {
-			*p = '}';
+		if (context_info_length < buflen) {
+			strcat(buffer, eoobj);
+			strcat(buffer, eol);
+			context_info_length += reserved_len;
 		}
 	}
 

+ 0 - 4
src/main.c

@@ -2612,10 +2612,6 @@ main(int argc, char *argv[])
 	        mg_get_option(g_ctx, "document_root"));
 
 	while (g_exit_flag == 0) {
-		char buffer[1024];
-		mg_get_context_info(g_ctx, buffer, sizeof(buffer));
-		puts(buffer);
-
 		sleep(1);
 	}
 

+ 11 - 0
test/page_status.lua

@@ -0,0 +1,11 @@
+mg.write("HTTP/1.0 200 OK\r\n")
+mg.write("Content-Type: text/html\r\n")
+mg.write("\r\n")
+mg.write("<html><body><p>\r\n")
+mg.write(mg.get_info("system"))
+mg.write("</p>\r\n<p>\r\n")
+mg.write(mg.get_info("context"))
+mg.write("</p>\r\n<p>\r\n")
+mg.write(mg.get_info("common"))
+mg.write("</p></body></html>\r\n")
+