diff options
author | Dominik Picheta <dominikpicheta@googlemail.com> | 2012-08-12 20:25:30 +0100 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@googlemail.com> | 2012-08-12 20:25:30 +0100 |
commit | 8dd1a5a1818584535edbb3cbf90c599cf4b9eefc (patch) | |
tree | a8e13911a2747792c9afcb0f744ef57275dbd685 /lib/pure | |
parent | e9604b4433cac0627086b1b28983546ed033e41e (diff) | |
download | Nim-8dd1a5a1818584535edbb3cbf90c599cf4b9eefc.tar.gz |
Sockets module should compile again on Windows. Fixed asyncio not compiling.
Diffstat (limited to 'lib/pure')
-rw-r--r-- | lib/pure/asyncio.nim | 60 | ||||
-rwxr-xr-x | lib/pure/sockets.nim | 4 |
2 files changed, 26 insertions, 38 deletions
diff --git a/lib/pure/asyncio.nim b/lib/pure/asyncio.nim index f31fe912a..113b1d080 100644 --- a/lib/pure/asyncio.nim +++ b/lib/pure/asyncio.nim @@ -417,59 +417,47 @@ proc len*(disp: PDispatcher): int = return disp.delegates.len when isMainModule: - type - PIntType = ref TIntType - TIntType = object of TObject - val: int - - PMyArg = ref TMyArg - TMyArg = object of TObject - dispatcher: PDispatcher - val: int - - proc testConnect(s: PAsyncSocket, arg: PObject) = - echo("Connected! " & $PIntType(arg).val) + + proc testConnect(s: PAsyncSocket, no: int) = + echo("Connected! " & $no) - proc testRead(s: PAsyncSocket, arg: PObject) = - echo("Reading! " & $PIntType(arg).val) + proc testRead(s: PAsyncSocket, no: int) = + echo("Reading! " & $no) var data = s.getSocket.recv() if data == "": - echo("Closing connection. " & $PIntType(arg).val) + echo("Closing connection. " & $no) s.close() echo(data) - echo("Finished reading! " & $PIntType(arg).val) + echo("Finished reading! " & $no) - proc testAccept(s: PAsyncSocket, arg: PObject) = - echo("Accepting client! " & $PMyArg(arg).val) + proc testAccept(s: PAsyncSocket, disp: PDispatcher, no: int) = + echo("Accepting client! " & $no) var client: PAsyncSocket new(client) var address = "" s.acceptAddr(client, address) echo("Accepted ", address) - client.handleRead = testRead - var userArg: PIntType - new(userArg) - userArg.val = 78 - client.userArg = userArg - PMyArg(arg).dispatcher.register(client) + client.handleRead = + proc (s: PAsyncSocket) = + testRead(s, 2) + disp.register(client) var d = newDispatcher() - var userArg: PIntType - new(userArg) - userArg.val = 0 - var s = AsyncSocket(userArg = userArg) + var s = AsyncSocket() s.connect("amber.tenthbit.net", TPort(6667)) - s.handleConnect = testConnect - s.handleRead = testRead + s.handleConnect = + proc (s: PAsyncSocket) = + testConnect(s, 1) + s.handleRead = + proc (s: PAsyncSocket) = + testRead(s, 1) d.register(s) - var userArg1: PMyArg - new(userArg1) - userArg1.val = 1 - userArg1.dispatcher = d - var server = AsyncSocket(userArg = userArg1) - server.handleAccept = testAccept + var server = AsyncSocket() + server.handleAccept = + proc (s: PAsyncSocket) = + testAccept(s, d, 78) server.bindAddr(TPort(5555)) server.listen() d.register(server) diff --git a/lib/pure/sockets.nim b/lib/pure/sockets.nim index d6b69d4c8..28f0a325e 100755 --- a/lib/pure/sockets.nim +++ b/lib/pure/sockets.nim @@ -1218,7 +1218,7 @@ proc recvFrom*(socket: TSocket, data: var string, length: int, data = newString(length) var sockAddress: Tsockaddr_in var addrLen = sizeof(sockAddress).TSockLen - result = recvFrom(socket.fd, cstring(data), length, flags, + result = recvFrom(socket.fd, cstring(data), length.cint, flags.cint, cast[ptr TSockAddr](addr(sockAddress)), addr(addrLen)) if result != -1: @@ -1326,7 +1326,7 @@ proc sendTo*(socket: TSocket, address: string, port: TPort, data: pointer, var success = false var it = aiList while it != nil: - result = sendTo(socket.fd, data, size.cint, flags, it.ai_addr, + result = sendTo(socket.fd, data, size.cint, flags.cint, it.ai_addr, it.ai_addrlen.TSockLen) if result != -1'i32: success = true |