Compare commits

..

No commits in common. "main" and "v1.4.0" have entirely different histories.
main ... v1.4.0

4 changed files with 14 additions and 17 deletions

View File

@ -4,7 +4,8 @@
], ],
"copyright": "Copyright © 2024, Andrew Lalis", "copyright": "Copyright © 2024, Andrew Lalis",
"dependencies": { "dependencies": {
"handy-http-primitives": "~>1.8", "handy-http-primitives": "~>1.6",
"photon": "~>0.11",
"streams": "~>3.6", "streams": "~>3.6",
"slf4d": "~>4.0" "slf4d": "~>4.0"
}, },

View File

@ -1,7 +1,9 @@
{ {
"fileVersion": 1, "fileVersion": 1,
"versions": { "versions": {
"handy-http-primitives": "1.8.0", "handy-http-primitives": "1.7.0",
"photon": "0.11.0",
"sharded-map": "2.7.0",
"slf4d": "4.1.1", "slf4d": "4.1.1",
"streams": "3.6.0" "streams": "3.6.0"
} }

View File

@ -49,10 +49,6 @@ class TaskPoolHttp1Transport : Http1Transport {
} }
unittest { unittest {
import slf4d.default_provider;
auto logProvider = DefaultProvider.builder().withRootLoggingLevel(Levels.DEBUG).build();
configureLoggingProvider(logProvider);
HttpRequestHandler handler = HttpRequestHandler.of( HttpRequestHandler handler = HttpRequestHandler.of(
(ref ServerHttpRequest request, ref ServerHttpResponse response) { (ref ServerHttpRequest request, ref ServerHttpResponse response) {
response.status = HttpStatus.OK; response.status = HttpStatus.OK;

View File

@ -33,7 +33,6 @@ abstract class Http1Transport : HttpTransport {
} }
void start() { void start() {
infoF!"Starting Http1Transport server on port %d."(port);
atomicStore(running, true); atomicStore(running, true);
runServer(); runServer();
} }
@ -41,7 +40,6 @@ abstract class Http1Transport : HttpTransport {
protected abstract void runServer(); protected abstract void runServer();
void stop() { void stop() {
infoF!"Stopping Http1Transport server on port %d."(port);
atomicStore(running, false); atomicStore(running, false);
} }
} }
@ -57,6 +55,7 @@ version(unittest) {
* transport = The transport implementation to test. * transport = The transport implementation to test.
*/ */
void testHttp1Transport(Http1Transport transport) { void testHttp1Transport(Http1Transport transport) {
import slf4d;
import core.thread; import core.thread;
import std.string; import std.string;
infoF!"Testing Http1Transport implementation: %s"(transport); infoF!"Testing Http1Transport implementation: %s"(transport);
@ -112,32 +111,31 @@ version(unittest) {
* requestHandler = The request handler that will handle the received HTTP request. * requestHandler = The request handler that will handle the received HTTP request.
*/ */
void handleClient(Socket clientSocket, HttpRequestHandler requestHandler) { void handleClient(Socket clientSocket, HttpRequestHandler requestHandler) {
SocketInputStream* inputStream = new SocketInputStream(clientSocket); auto inputStream = SocketInputStream(clientSocket);
BufferedInputStream!(SocketInputStream*, 8192)* bufferedInput auto bufferedInput = bufferedInputStreamFor!(8192)(inputStream);
= new BufferedInputStream!(SocketInputStream*, 8192)(inputStream);
// Get remote address from the socket. // Get remote address from the socket.
import handy_http_primitives.address; import handy_http_primitives.address;
ClientAddress addr = getAddress(clientSocket); ClientAddress addr = getAddress(clientSocket);
traceF!"Got request from client: %s"(addr.toString()); debugF!"Handling client request from %s."(addr.toString());
auto result = readHttpRequest(bufferedInput, addr); auto result = readHttpRequest(&bufferedInput, addr);
debug_("Finished reading HTTP request from client.");
if (result.hasError) { if (result.hasError) {
if (result.error.code != -1) { if (result.error.code != -1) {
// Only warn if we didn't read an empty request. // Only warn if we didn't read an empty request.
warnF!"Failed to read request: %s"(result.error.message); warnF!"Failed to read HTTP request: %s"(result.error.message);
} }
inputStream.closeStream(); inputStream.closeStream();
return; return;
} }
scope ServerHttpRequest request = result.request; scope ServerHttpRequest request = result.request;
scope ServerHttpResponse response; scope ServerHttpResponse response;
SocketOutputStream* outputStream = new SocketOutputStream(clientSocket); SocketOutputStream outputStream = SocketOutputStream(clientSocket);
response.outputStream = outputStreamObjectFor(HttpResponseOutputStream!(SocketOutputStream*)( response.outputStream = outputStreamObjectFor(HttpResponseOutputStream!(SocketOutputStream*)(
outputStream, &outputStream,
&response &response
)); ));
try { try {
requestHandler.handle(request, response); requestHandler.handle(request, response);
debugF!"%s %s -> %d %s"(request.method, request.url, response.status.code, response.status.text);
} catch (Exception e) { } catch (Exception e) {
error("Exception thrown while handling request.", e); error("Exception thrown while handling request.", e);
} catch (Throwable t) { } catch (Throwable t) {