Resolve some dom96 comments
This commit is contained in:
parent
43329c5909
commit
de6af2f887
1 changed files with 16 additions and 11 deletions
|
|
@ -444,14 +444,14 @@ when defined(windows) or defined(nimdoc):
|
||||||
|
|
||||||
PCustomOverlapped* = ref CustomOverlapped
|
PCustomOverlapped* = ref CustomOverlapped
|
||||||
|
|
||||||
PCD = object
|
AsyncFD* = distinct int
|
||||||
|
|
||||||
|
PostCallbackData = object
|
||||||
ioPort: Handle
|
ioPort: Handle
|
||||||
handleFd: AsyncFD
|
handleFd: AsyncFD
|
||||||
waitFd: Handle
|
waitFd: Handle
|
||||||
ovl: PCustomOverlapped
|
ovl: PCustomOverlapped
|
||||||
PPCD = ptr PCD
|
PostCallbackDataPtr = ptr PostCallbackData
|
||||||
|
|
||||||
AsyncFD* = distinct int
|
|
||||||
|
|
||||||
Callback = proc (fd: AsyncFD): bool {.closure,gcsafe.}
|
Callback = proc (fd: AsyncFD): bool {.closure,gcsafe.}
|
||||||
{.deprecated: [TCompletionKey: CompletionKey, TAsyncFD: AsyncFD,
|
{.deprecated: [TCompletionKey: CompletionKey, TAsyncFD: AsyncFD,
|
||||||
|
|
@ -964,9 +964,9 @@ when defined(windows) or defined(nimdoc):
|
||||||
|
|
||||||
{.push stackTrace:off.}
|
{.push stackTrace:off.}
|
||||||
proc waitableCallback(param: pointer,
|
proc waitableCallback(param: pointer,
|
||||||
TimerOrWaitFired: WINBOOL): void {.stdcall.} =
|
timerOrWaitFired: WINBOOL): void {.stdcall.} =
|
||||||
var p = cast[PPCD](param)
|
var p = cast[PostCallbackDataPtr](param)
|
||||||
discard postQueuedCompletionStatus(p.ioPort, Dword(TimerOrWaitFired),
|
discard postQueuedCompletionStatus(p.ioPort, timerOrWaitFired.Dword,
|
||||||
ULONG_PTR(p.handleFd),
|
ULONG_PTR(p.handleFd),
|
||||||
cast[pointer](p.ovl))
|
cast[pointer](p.ovl))
|
||||||
{.pop.}
|
{.pop.}
|
||||||
|
|
@ -977,7 +977,7 @@ when defined(windows) or defined(nimdoc):
|
||||||
var hEvent = wsaCreateEvent()
|
var hEvent = wsaCreateEvent()
|
||||||
if hEvent == 0:
|
if hEvent == 0:
|
||||||
raiseOSError(osLastError())
|
raiseOSError(osLastError())
|
||||||
var pcd = cast[PPCD](allocShared0(sizeof(PCD)))
|
var pcd = cast[PostCallbackDataPtr](allocShared0(sizeof(PostCallbackData)))
|
||||||
pcd.ioPort = p.ioPort
|
pcd.ioPort = p.ioPort
|
||||||
pcd.handleFd = fd
|
pcd.handleFd = fd
|
||||||
var ol = PCustomOverlapped()
|
var ol = PCustomOverlapped()
|
||||||
|
|
@ -991,11 +991,15 @@ when defined(windows) or defined(nimdoc):
|
||||||
# unregisterWait() is called before callback, because appropriate
|
# unregisterWait() is called before callback, because appropriate
|
||||||
# winsockets function can re-enable event.
|
# winsockets function can re-enable event.
|
||||||
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms741576(v=vs.85).aspx
|
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms741576(v=vs.85).aspx
|
||||||
discard unregisterWait(pcd.waitFd)
|
if unregisterWait(pcd.waitFd) == 0:
|
||||||
|
let err = osLastError()
|
||||||
|
if err.int32 != ERROR_IO_PENDING:
|
||||||
|
raiseOSError(osLastError())
|
||||||
if cb(fd):
|
if cb(fd):
|
||||||
# callback returned `true`, so we free all allocated resources
|
# callback returned `true`, so we free all allocated resources
|
||||||
discard wsaCloseEvent(hEvent)
|
|
||||||
deallocShared(cast[pointer](pcd))
|
deallocShared(cast[pointer](pcd))
|
||||||
|
if not wsaCloseEvent(hEvent):
|
||||||
|
raiseOSError(osLastError())
|
||||||
# pcd.ovl will be unrefed in poll().
|
# pcd.ovl will be unrefed in poll().
|
||||||
else:
|
else:
|
||||||
# callback returned `false` we need to continue
|
# callback returned `false` we need to continue
|
||||||
|
|
@ -1003,8 +1007,9 @@ when defined(windows) or defined(nimdoc):
|
||||||
# new callback was already registered with `fd`, so we free all
|
# new callback was already registered with `fd`, so we free all
|
||||||
# allocated resources. This happens because in callback `cb`
|
# allocated resources. This happens because in callback `cb`
|
||||||
# addRead/addWrite was called with same `fd`.
|
# addRead/addWrite was called with same `fd`.
|
||||||
discard wsaCloseEvent(hEvent)
|
|
||||||
deallocShared(cast[pointer](pcd))
|
deallocShared(cast[pointer](pcd))
|
||||||
|
if not wsaCloseEvent(hEvent):
|
||||||
|
raiseOSError(osLastError())
|
||||||
else:
|
else:
|
||||||
# we need to include `fd` again
|
# we need to include `fd` again
|
||||||
p.handles.incl(fd)
|
p.handles.incl(fd)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue