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 | |
parent | e9604b4433cac0627086b1b28983546ed033e41e (diff) | |
download | Nim-8dd1a5a1818584535edbb3cbf90c599cf4b9eefc.tar.gz |
Sockets module should compile again on Windows. Fixed asyncio not compiling.
-rw-r--r-- | lib/pure/asyncio.nim | 60 | ||||
-rwxr-xr-x | lib/pure/sockets.nim | 4 | ||||
-rwxr-xr-x | lib/windows/winlean.nim | 6 |
3 files changed, 29 insertions, 41 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 diff --git a/lib/windows/winlean.nim b/lib/windows/winlean.nim index 4c0671df5..1ea00c737 100755 --- a/lib/windows/winlean.nim +++ b/lib/windows/winlean.nim @@ -451,15 +451,15 @@ proc listen*(s: TWinSocket, backlog: cint): cint {. proc recv*(s: TWinSocket, buf: pointer, len, flags: cint): cint {. stdcall, importc: "recv", dynlib: ws2dll.} proc recvfrom*(s: TWinSocket, buf: cstring, len, flags: cint, - fromm: ptr TSockAddr, fromlen: ptr cint): cint {. + fromm: ptr TSockAddr, fromlen: ptr Tsocklen): cint {. stdcall, importc: "recvfrom", dynlib: ws2dll.} proc select*(nfds: cint, readfds, writefds, exceptfds: ptr TFdSet, timeout: ptr TTimeval): cint {. stdcall, importc: "select", dynlib: ws2dll.} proc send*(s: TWinSocket, buf: pointer, len, flags: cint): cint {. stdcall, importc: "send", dynlib: ws2dll.} -proc sendto*(s: TWinSocket, buf: cstring, len, flags: cint, - to: ptr TSockAddr, tolen: cint): cint {. +proc sendto*(s: TWinSocket, buf: pointer, len, flags: cint, + to: ptr TSockAddr, tolen: Tsocklen): cint {. stdcall, importc: "sendto", dynlib: ws2dll.} proc shutdown*(s: TWinSocket, how: cint): cint {. |