Răsfoiți Sursa

Switch JSON library for photon-http (#10190)

* Use Mir Ion for JSON and use buffer from xbuf

* Use constants not magic numbers

---------

Co-authored-by: Dmitry Olshansky <[email protected]>
Dmitry Olshansky 4 zile în urmă
părinte
comite
8eb2a7885f
2 a modificat fișierele cu 15 adăugiri și 9 ștergeri
  1. 3 2
      frameworks/D/photon-http/dub.json
  2. 12 7
      frameworks/D/photon-http/source/app.d

+ 3 - 2
frameworks/D/photon-http/dub.json

@@ -4,9 +4,10 @@
 	],
 	],
 	"copyright": "Copyright © 2025, Dmitry Olshansky",
 	"copyright": "Copyright © 2025, Dmitry Olshansky",
 	"dependencies": {
 	"dependencies": {
-		"asdf": "~>0.7.17",
+		"mir-ion": "~>2.3.4",
+		"xbuf" : "~>0.2.1",
 		"photon": "~>0.18.5",
 		"photon": "~>0.18.5",
-		"photon-http": "~>0.6.0"
+		"photon-http": "~>0.6.8"
 	},
 	},
 	"description": "Benchmark of photon-http",
 	"description": "Benchmark of photon-http",
 	"license": "BSL-1.0",
 	"license": "BSL-1.0",

+ 12 - 7
frameworks/D/photon-http/source/app.d

@@ -2,7 +2,12 @@ import std.stdio;
 import std.socket;
 import std.socket;
 import std.array;
 import std.array;
 
 
-import asdf.serialization;
+import mir.ser;
+import mir.ser.json;
+
+import std.range.primitives;
+
+import glow.xbuf;
 
 
 import photon, photon.http;
 import photon, photon.http;
 
 
@@ -14,21 +19,21 @@ struct Message
 class BenchmarkProcessor : HttpProcessor {
 class BenchmarkProcessor : HttpProcessor {
     HttpHeader[] plainText = [HttpHeader("Content-Type", "text/plain; charset=utf-8")];
     HttpHeader[] plainText = [HttpHeader("Content-Type", "text/plain; charset=utf-8")];
     HttpHeader[] json = [HttpHeader("Content-Type", "application/json")];
     HttpHeader[] json = [HttpHeader("Content-Type", "application/json")];
-    Appender!(char[]) jsonBuf;
+    Buffer!char jsonBuf;
     this(Socket sock) {
     this(Socket sock) {
 		super(sock);
 		super(sock);
-		jsonBuf = appender!(char[]);
+		jsonBuf = Buffer!char(256);
 	}
 	}
 
 
     override void handle(HttpRequest req) {
     override void handle(HttpRequest req) {
 		if (req.uri == "/plaintext") {
 		if (req.uri == "/plaintext") {
-			respondWith("Hello, world!", 200, plainText);
+			respondWith("Hello, world!", HttpStatus.OK, plainText);
 		} else if(req.uri == "/json") {
 		} else if(req.uri == "/json") {
 			jsonBuf.clear();
 			jsonBuf.clear();
-			Message("Hello, World!").serializeToJsonPretty!""(jsonBuf);
-			respondWith(jsonBuf.data, 200, json);
+			serializeJsonPretty!""(jsonBuf, Message("Hello, World!"));
+			respondWith(jsonBuf.data, HttpStatus.OK, json);
 		} else {
 		} else {
-			respondWith("Not found", 404, plainText);
+			respondWith("Not found", HttpStatus.NotFound, plainText);
 		}
 		}
     }
     }
 }
 }