Fix circular dependency
parent
eb2cd0b066
commit
b94a20cc8a
|
@ -1,6 +1,6 @@
|
|||
! Copyright (C) 2007 Doug Coleman.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors continuations io.backend io.nonblocking libc
|
||||
USING: accessors continuations io.backend libc
|
||||
kernel namespaces sequences system vectors ;
|
||||
IN: destructors
|
||||
|
||||
|
@ -49,33 +49,3 @@ M: memory-destructor dispose ( obj -- )
|
|||
|
||||
: free-later ( alien -- )
|
||||
<memory-destructor> <only-once> add-error-destructor ;
|
||||
|
||||
! Handles
|
||||
TUPLE: handle-destructor alien ;
|
||||
|
||||
C: <handle-destructor> handle-destructor
|
||||
|
||||
M: handle-destructor dispose ( obj -- )
|
||||
alien>> close-handle ;
|
||||
|
||||
: close-always ( handle -- )
|
||||
<handle-destructor> <only-once> add-always-destructor ;
|
||||
|
||||
: close-later ( handle -- )
|
||||
<handle-destructor> <only-once> add-error-destructor ;
|
||||
|
||||
! Sockets
|
||||
TUPLE: socket-destructor alien ;
|
||||
|
||||
C: <socket-destructor> socket-destructor
|
||||
|
||||
HOOK: destruct-socket io-backend ( obj -- )
|
||||
|
||||
M: socket-destructor dispose ( obj -- )
|
||||
alien>> destruct-socket ;
|
||||
|
||||
: close-socket-always ( handle -- )
|
||||
<socket-destructor> <only-once> add-always-destructor ;
|
||||
|
||||
: close-socket-later ( handle -- )
|
||||
<socket-destructor> <only-once> add-error-destructor ;
|
||||
|
|
|
@ -20,6 +20,19 @@ GENERIC: init-handle ( handle -- )
|
|||
|
||||
GENERIC: close-handle ( handle -- )
|
||||
|
||||
TUPLE: handle-destructor handle ;
|
||||
|
||||
C: <handle-destructor> handle-destructor
|
||||
|
||||
M: handle-destructor dispose ( obj -- )
|
||||
handle>> close-handle ;
|
||||
|
||||
: close-always ( handle -- )
|
||||
<handle-destructor> <only-once> add-always-destructor ;
|
||||
|
||||
: close-later ( handle -- )
|
||||
<handle-destructor> <only-once> add-error-destructor ;
|
||||
|
||||
: <port> ( handle class -- port )
|
||||
new
|
||||
swap dup init-handle >>handle ; inline
|
||||
|
|
|
@ -6,11 +6,13 @@ continuations destructors
|
|||
openssl openssl.libcrypto openssl.libssl
|
||||
io.files io.nonblocking io.unix.backend io.unix.sockets
|
||||
io.encodings.ascii io.buffers io.sockets io.sockets.secure
|
||||
unix.ffi ;
|
||||
unix ;
|
||||
IN: io.unix.sockets.secure
|
||||
|
||||
! todo: SSL_pending, rehandshake
|
||||
! do we call write twice, wth 0 bytes at the end?
|
||||
! check-certificate at some point
|
||||
! test on windows
|
||||
|
||||
M: ssl-handle handle-fd file>> ;
|
||||
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
USING: alien alien.c-types alien.strings generic kernel math
|
||||
namespaces threads sequences byte-arrays io.nonblocking
|
||||
io.binary io.unix.backend io.streams.duplex io.sockets.impl
|
||||
io.backend io.files io.files.private io.encodings.utf8
|
||||
math.parser continuations libc combinators system accessors
|
||||
qualified unix ;
|
||||
io.backend io.nonblocking io.files io.files.private
|
||||
io.encodings.utf8 math.parser continuations libc combinators
|
||||
system accessors qualified destructors unix ;
|
||||
|
||||
EXCLUDE: io => read write close ;
|
||||
EXCLUDE: io.sockets => accept ;
|
||||
|
|
|
@ -175,6 +175,18 @@ USE: windows.winsock
|
|||
[ server-sockaddr ] keep
|
||||
sockaddr-type heap-size bind socket-error ;
|
||||
|
||||
TUPLE: socket-destructor alien ;
|
||||
|
||||
C: <socket-destructor> socket-destructor
|
||||
|
||||
HOOK: destruct-socket io-backend ( obj -- )
|
||||
|
||||
M: socket-destructor dispose ( obj -- )
|
||||
alien>> destruct-socket ;
|
||||
|
||||
: close-socket-later ( handle -- )
|
||||
<socket-destructor> <only-once> add-error-destructor ;
|
||||
|
||||
: server-fd ( addrspec type -- fd )
|
||||
>r dup protocol-family r> open-socket
|
||||
dup close-socket-later
|
||||
|
|
Loading…
Reference in New Issue