! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien.c-types alien.data alien.strings arrays
byte-arrays classes classes.struct combinators
-combinators.short-circuit continuations destructors fry
-grouping init io.backend io.binary io.encodings.ascii
+combinators.short-circuit continuations destructors endian fry
+grouping init io.backend io.encodings.ascii
io.encodings.binary io.pathnames io.ports io.streams.duplex
kernel locals math math.parser memoize namespaces present
sequences sequences.private splitting strings summary system
M: ipv4 sockaddr-size drop sockaddr-in heap-size ;
-M: ipv4 empty-sockaddr drop sockaddr-in <struct> ;
+M: ipv4 empty-sockaddr drop sockaddr-in new ;
: make-sockaddr-part ( inet -- sockaddr )
- sockaddr-in <struct>
+ sockaddr-in new
AF_INET >>family
swap
port>> 0 or htons >>port ; inline
M: ipv6 sockaddr-size drop sockaddr-in6 heap-size ;
-M: ipv6 empty-sockaddr drop sockaddr-in6 <struct> ;
+M: ipv6 empty-sockaddr drop sockaddr-in6 new ;
: make-sockaddr-in6-part ( inet -- sockaddr )
- sockaddr-in6 <struct>
+ sockaddr-in6 new
AF_INET6 >>family
swap
port>> 0 or htons >>port ; inline
[ call-next-method ] [ drop port>> ntohs ] 2bi with-port ;
M: inet6 present
- [ call-next-method ] [ port>> number>string ] bi ":" glue ;
+ [ call-next-method "[" "]" surround ] [ port>> number>string ] bi ":" glue ;
M: inet6 protocol drop 0 ;
HOOK: addrinfo-error-string io-backend ( n -- string )
: prepare-addrinfo ( -- addrinfo )
- addrinfo <struct>
+ addrinfo new
PF_UNSPEC >>family
IPPROTO_TCP >>protocol ;
MEMO: ipv6-supported? ( -- ? )
[ "::1" 0 <inet6> binary <server> dispose t ] [ drop f ] recover ;
-[ \ ipv6-supported? reset-memoized ]
-"io.sockets:ipv6-supported?" add-startup-hook
+STARTUP-HOOK: [ \ ipv6-supported? reset-memoized ]
GENERIC: resolve-host ( addrspec -- seq )