Compare commits
No commits in common. "main" and "v1.4.0" have entirely different histories.
3
dub.json
3
dub.json
|
@ -4,7 +4,8 @@
|
|||
],
|
||||
"copyright": "Copyright © 2024, Andrew Lalis",
|
||||
"dependencies": {
|
||||
"handy-http-primitives": "~>1.8",
|
||||
"handy-http-primitives": "~>1.6",
|
||||
"photon": "~>0.11",
|
||||
"streams": "~>3.6",
|
||||
"slf4d": "~>4.0"
|
||||
},
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
{
|
||||
"fileVersion": 1,
|
||||
"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",
|
||||
"streams": "3.6.0"
|
||||
}
|
||||
|
|
|
@ -49,10 +49,6 @@ class TaskPoolHttp1Transport : Http1Transport {
|
|||
}
|
||||
|
||||
unittest {
|
||||
import slf4d.default_provider;
|
||||
auto logProvider = DefaultProvider.builder().withRootLoggingLevel(Levels.DEBUG).build();
|
||||
configureLoggingProvider(logProvider);
|
||||
|
||||
HttpRequestHandler handler = HttpRequestHandler.of(
|
||||
(ref ServerHttpRequest request, ref ServerHttpResponse response) {
|
||||
response.status = HttpStatus.OK;
|
||||
|
|
|
@ -33,7 +33,6 @@ abstract class Http1Transport : HttpTransport {
|
|||
}
|
||||
|
||||
void start() {
|
||||
infoF!"Starting Http1Transport server on port %d."(port);
|
||||
atomicStore(running, true);
|
||||
runServer();
|
||||
}
|
||||
|
@ -41,7 +40,6 @@ abstract class Http1Transport : HttpTransport {
|
|||
protected abstract void runServer();
|
||||
|
||||
void stop() {
|
||||
infoF!"Stopping Http1Transport server on port %d."(port);
|
||||
atomicStore(running, false);
|
||||
}
|
||||
}
|
||||
|
@ -57,6 +55,7 @@ version(unittest) {
|
|||
* transport = The transport implementation to test.
|
||||
*/
|
||||
void testHttp1Transport(Http1Transport transport) {
|
||||
import slf4d;
|
||||
import core.thread;
|
||||
import std.string;
|
||||
infoF!"Testing Http1Transport implementation: %s"(transport);
|
||||
|
@ -112,32 +111,31 @@ version(unittest) {
|
|||
* requestHandler = The request handler that will handle the received HTTP request.
|
||||
*/
|
||||
void handleClient(Socket clientSocket, HttpRequestHandler requestHandler) {
|
||||
SocketInputStream* inputStream = new SocketInputStream(clientSocket);
|
||||
BufferedInputStream!(SocketInputStream*, 8192)* bufferedInput
|
||||
= new BufferedInputStream!(SocketInputStream*, 8192)(inputStream);
|
||||
auto inputStream = SocketInputStream(clientSocket);
|
||||
auto bufferedInput = bufferedInputStreamFor!(8192)(inputStream);
|
||||
// Get remote address from the socket.
|
||||
import handy_http_primitives.address;
|
||||
ClientAddress addr = getAddress(clientSocket);
|
||||
traceF!"Got request from client: %s"(addr.toString());
|
||||
auto result = readHttpRequest(bufferedInput, addr);
|
||||
debugF!"Handling client request from %s."(addr.toString());
|
||||
auto result = readHttpRequest(&bufferedInput, addr);
|
||||
debug_("Finished reading HTTP request from client.");
|
||||
if (result.hasError) {
|
||||
if (result.error.code != -1) {
|
||||
// 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();
|
||||
return;
|
||||
}
|
||||
scope ServerHttpRequest request = result.request;
|
||||
scope ServerHttpResponse response;
|
||||
SocketOutputStream* outputStream = new SocketOutputStream(clientSocket);
|
||||
SocketOutputStream outputStream = SocketOutputStream(clientSocket);
|
||||
response.outputStream = outputStreamObjectFor(HttpResponseOutputStream!(SocketOutputStream*)(
|
||||
outputStream,
|
||||
&outputStream,
|
||||
&response
|
||||
));
|
||||
try {
|
||||
requestHandler.handle(request, response);
|
||||
debugF!"%s %s -> %d %s"(request.method, request.url, response.status.code, response.status.text);
|
||||
} catch (Exception e) {
|
||||
error("Exception thrown while handling request.", e);
|
||||
} catch (Throwable t) {
|
||||
|
|
Loading…
Reference in New Issue