Case sensitivity fixes for Posix.

This commit is contained in:
Dominik Picheta 2014-08-30 15:52:04 +01:00
commit f6dc76cfe3
2 changed files with 21 additions and 21 deletions

View file

@ -720,42 +720,42 @@ else:
proc update(sock: TAsyncFD, events: set[TEvent]) = proc update(sock: TAsyncFD, events: set[TEvent]) =
let p = getGlobalDispatcher() let p = getGlobalDispatcher()
assert sock.TSocketHandle in p.selector assert sock.SocketHandle in p.selector
discard p.selector.update(sock.TSocketHandle, events) discard p.selector.update(sock.SocketHandle, events)
proc register(sock: TAsyncFD) = proc register(sock: TAsyncFD) =
let p = getGlobalDispatcher() let p = getGlobalDispatcher()
var data = PData(sock: sock, readCBs: @[], writeCBs: @[]) var data = PData(sock: sock, readCBs: @[], writeCBs: @[])
p.selector.register(sock.TSocketHandle, {}, data.PObject) p.selector.register(sock.SocketHandle, {}, data.PObject)
proc newAsyncRawSocket*(domain: TDomain = AF_INET, proc newAsyncRawSocket*(domain: TDomain = AF_INET,
typ: TType = SOCK_STREAM, typ: TType = SOCK_STREAM,
protocol: TProtocol = IPPROTO_TCP): TAsyncFD = protocol: TProtocol = IPPROTO_TCP): TAsyncFD =
result = newRawSocket(domain, typ, protocol).TAsyncFD result = newRawSocket(domain, typ, protocol).TAsyncFD
result.TSocketHandle.setBlocking(false) result.SocketHandle.setBlocking(false)
register(result) register(result)
proc closeSocket*(sock: TAsyncFD) = proc closeSocket*(sock: TAsyncFD) =
let disp = getGlobalDispatcher() let disp = getGlobalDispatcher()
sock.TSocketHandle.close() sock.SocketHandle.close()
disp.selector.unregister(sock.TSocketHandle) disp.selector.unregister(sock.SocketHandle)
proc unregister*(fd: TAsyncFD) = proc unregister*(fd: TAsyncFD) =
getGlobalDispatcher().selector.unregister(fd.TSocketHandle) getGlobalDispatcher().selector.unregister(fd.SocketHandle)
proc addRead(sock: TAsyncFD, cb: TCallback) = proc addRead(sock: TAsyncFD, cb: TCallback) =
let p = getGlobalDispatcher() let p = getGlobalDispatcher()
if sock.TSocketHandle notin p.selector: if sock.SocketHandle notin p.selector:
raise newException(EInvalidValue, "File descriptor not registered.") raise newException(EInvalidValue, "File descriptor not registered.")
p.selector[sock.TSocketHandle].data.PData.readCBs.add(cb) p.selector[sock.SocketHandle].data.PData.readCBs.add(cb)
update(sock, p.selector[sock.TSocketHandle].events + {EvRead}) update(sock, p.selector[sock.SocketHandle].events + {EvRead})
proc addWrite(sock: TAsyncFD, cb: TCallback) = proc addWrite(sock: TAsyncFD, cb: TCallback) =
let p = getGlobalDispatcher() let p = getGlobalDispatcher()
if sock.TSocketHandle notin p.selector: if sock.SocketHandle notin p.selector:
raise newException(EInvalidValue, "File descriptor not registered.") raise newException(EInvalidValue, "File descriptor not registered.")
p.selector[sock.TSocketHandle].data.PData.writeCBs.add(cb) p.selector[sock.SocketHandle].data.PData.writeCBs.add(cb)
update(sock, p.selector[sock.TSocketHandle].events + {EvWrite}) update(sock, p.selector[sock.SocketHandle].events + {EvWrite})
proc poll*(timeout = 500) = proc poll*(timeout = 500) =
let p = getGlobalDispatcher() let p = getGlobalDispatcher()
@ -808,7 +808,7 @@ else:
var lastError: TOSErrorCode var lastError: TOSErrorCode
var it = aiList var it = aiList
while it != nil: while it != nil:
var ret = connect(socket.TSocketHandle, it.ai_addr, it.ai_addrlen.TSocklen) var ret = connect(socket.SocketHandle, it.ai_addr, it.ai_addrlen.Socklen)
if ret == 0: if ret == 0:
# Request to connect completed immediately. # Request to connect completed immediately.
success = true success = true
@ -837,7 +837,7 @@ else:
proc cb(sock: TAsyncFD): bool = proc cb(sock: TAsyncFD): bool =
result = true result = true
let res = recv(sock.TSocketHandle, addr readBuffer[0], size.cint, let res = recv(sock.SocketHandle, addr readBuffer[0], size.cint,
flags.toOSFlags()) flags.toOSFlags())
#echo("recv cb res: ", res) #echo("recv cb res: ", res)
if res < 0: if res < 0:
@ -870,7 +870,7 @@ else:
result = true result = true
let netSize = data.len-written let netSize = data.len-written
var d = data.cstring var d = data.cstring
let res = send(sock.TSocketHandle, addr d[written], netSize.cint, let res = send(sock.SocketHandle, addr d[written], netSize.cint,
MSG_NOSIGNAL) MSG_NOSIGNAL)
if res < 0: if res < 0:
let lastError = osLastError() let lastError = osLastError()
@ -898,10 +898,10 @@ else:
client: TAsyncFD]]("acceptAddr") client: TAsyncFD]]("acceptAddr")
proc cb(sock: TAsyncFD): bool = proc cb(sock: TAsyncFD): bool =
result = true result = true
var sockAddress: Tsockaddr_in var sockAddress: SockAddr_in
var addrLen = sizeof(sockAddress).TSocklen var addrLen = sizeof(sockAddress).Socklen
var client = accept(sock.TSocketHandle, var client = accept(sock.SocketHandle,
cast[ptr TSockAddr](addr(sockAddress)), addr(addrLen)) cast[ptr SockAddr](addr(sockAddress)), addr(addrLen))
if client == osInvalidSocket: if client == osInvalidSocket:
let lastError = osLastError() let lastError = osLastError()
assert lastError.int32 notin {EWOULDBLOCK, EAGAIN} assert lastError.int32 notin {EWOULDBLOCK, EAGAIN}

View file

@ -260,7 +260,7 @@ proc socketError*(socket: Socket, err: int = -1, async = false,
else: else:
if lastE.int32 == EAGAIN or lastE.int32 == EWOULDBLOCK: if lastE.int32 == EAGAIN or lastE.int32 == EWOULDBLOCK:
return return
else: osError(lastE) else: raiseOSError(lastE)
else: raiseOSError(lastE) else: raiseOSError(lastE)
proc listen*(socket: Socket, backlog = SOMAXCONN) {.tags: [ReadIOEffect].} = proc listen*(socket: Socket, backlog = SOMAXCONN) {.tags: [ReadIOEffect].} =