summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2020-11-15 07:27:13 +0100
committerGitHub <noreply@github.com>2020-11-15 07:27:13 +0100
commit122f22d1632255cf7d0539c620a30155dc84fd69 (patch)
treed569497231b2f9608bacfb763d42ab7a844e97c9
parent1978b9120250f69df20a5bbb2cb11e73cd3eae5a (diff)
downloadNim-122f22d1632255cf7d0539c620a30155dc84fd69.tar.gz
asynchttpserver cleanups [backport:1.0] (#15966)
* asynchttpserver cleanups [backport:1.0]
-rw-r--r--lib/pure/asynchttpserver.nim20
-rw-r--r--tests/errmsgs/tgcsafety.nim2
2 files changed, 10 insertions, 12 deletions
diff --git a/lib/pure/asynchttpserver.nim b/lib/pure/asynchttpserver.nim
index f3d4b3dd2..f3f59baf8 100644
--- a/lib/pure/asynchttpserver.nim
+++ b/lib/pure/asynchttpserver.nim
@@ -14,8 +14,8 @@
 ## application in production you should use a reverse proxy (for example nginx)
 ## instead of allowing users to connect directly to this server.
 ##
-## Basic usage
-## ===========
+## Example
+## =======
 ##
 ## This example will create an HTTP server on port 8080. The server will
 ## respond to all requests with a ``200 OK`` response code and "Hello World"
@@ -32,11 +32,10 @@
 ##           "Content-type": "text/plain; charset=utf-8"}
 ##       await req.respond(Http200, "Hello World", headers.newHttpHeaders())
 ##
-##     server.listen Port(5555)
+##     server.listen Port(8080)
 ##     while true:
-##       if server.shouldAcceptRequest(5):
-##         var (address, client) = await server.socket.acceptAddr()
-##         asyncCheck processClient(server, client, address, cb)
+##       if server.shouldAcceptRequest():
+##         asyncCheck server.acceptRequest(cb)
 ##       else:
 ##         poll()
 ##
@@ -333,7 +332,7 @@ proc shouldAcceptRequest*(server: AsyncHttpServer;
   result = assumedDescriptorsPerRequest < 0 or
     (activeDescriptors() + assumedDescriptorsPerRequest < server.maxFDs)
 
-proc acceptRequest*(server: AsyncHttpServer, port: Port,
+proc acceptRequest*(server: AsyncHttpServer,
             callback: proc (request: Request): Future[void] {.closure, gcsafe.}) {.async.} =
   ## Accepts a single request. Write an explicit loop around this proc so that
   ## errors can be handled properly.
@@ -343,7 +342,7 @@ proc acceptRequest*(server: AsyncHttpServer, port: Port,
 proc serve*(server: AsyncHttpServer, port: Port,
             callback: proc (request: Request): Future[void] {.closure, gcsafe.},
             address = "";
-            assumedDescriptorsPerRequest = 5) {.async.} =
+            assumedDescriptorsPerRequest = -1) {.async.} =
   ## Starts the process of listening for incoming HTTP connections on the
   ## specified address and port.
   ##
@@ -382,9 +381,8 @@ when not defined(testing) and isMainModule:
 
     server.listen Port(5555)
     while true:
-      if server.shouldAcceptRequest(5):
-        var (address, client) = await server.socket.acceptAddr()
-        asyncCheck processClient(server, client, address, cb)
+      if server.shouldAcceptRequest():
+        asyncCheck server.acceptRequest(cb)
       else:
         poll()
 
diff --git a/tests/errmsgs/tgcsafety.nim b/tests/errmsgs/tgcsafety.nim
index 721677e95..77515b74f 100644
--- a/tests/errmsgs/tgcsafety.nim
+++ b/tests/errmsgs/tgcsafety.nim
@@ -6,7 +6,7 @@ type mismatch: got <AsyncHttpServer, Port, proc (req: Request): Future[system.vo
 but expected one of:
 proc serve(server: AsyncHttpServer; port: Port;
            callback: proc (request: Request): Future[void] {.closure, gcsafe.};
-           address = ""; assumedDescriptorsPerRequest = 5): owned(Future[void])
+           address = ""; assumedDescriptorsPerRequest = -1): owned(Future[void])
   first type mismatch at position: 3
   required type for callback: proc (request: Request): Future[system.void]{.closure, gcsafe.}
   but expression 'cb' is of type: proc (req: Request): Future[system.void]{.locks: <unknown>.}