summary refs log tree commit diff stats
path: root/tests/async
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@googlemail.com>2014-03-22 15:42:40 +0000
committerDominik Picheta <dominikpicheta@googlemail.com>2014-03-22 22:33:53 +0000
commit2ce9f1c77f9aa4504c55c75c57e74a5ad840916d (patch)
treed0f2c9802eb85d95da9fd9a1ebc3b5e7185ff838 /tests/async
parent5bf45d92854dd9b95fc35c6d2a646c70432825b8 (diff)
downloadNim-2ce9f1c77f9aa4504c55c75c57e74a5ad840916d.tar.gz
Copied most blocking socket operations to the net module.
Diffstat (limited to 'tests/async')
-rw-r--r--tests/async/tasyncawait.nim17
1 files changed, 14 insertions, 3 deletions
diff --git a/tests/async/tasyncawait.nim b/tests/async/tasyncawait.nim
index 91dfb7932..ae22d8d52 100644
--- a/tests/async/tasyncawait.nim
+++ b/tests/async/tasyncawait.nim
@@ -3,7 +3,7 @@ discard """
   cmd: "nimrod cc --hints:on $# $#"
   output: "5000"
 """
-import asyncio2, sockets2, net, strutils
+import asyncio2, sockets2, net, strutils, os
 
 var disp = newDispatcher()
 var msgCount = 0
@@ -50,8 +50,19 @@ proc readMessages(disp: PDispatcher, client: TSocketHandle) {.async.} =
 proc createServer(disp: PDispatcher, port: TPort) {.async.} =
   var server = disp.socket()
   #disp.register(server)
-  server.bindAddr(port)
-  server.listen()
+  block:
+    var name: TSockaddr_in
+    when defined(windows):
+      name.sin_family = toInt(AF_INET).int16
+    else:
+      name.sin_family = toInt(AF_INET)
+    name.sin_port = htons(int16(port))
+    name.sin_addr.s_addr = htonl(INADDR_ANY)
+    if bindAddr(server, cast[ptr TSockAddr](addr(name)),
+                  sizeof(name).TSocklen) < 0'i32:
+      osError(osLastError())
+  
+  discard server.listen()
   while true:
     var client = await disp.accept(server)
     readMessages(disp, client)