io.sockets: adding "broadcast port", ideally would just be +broadcast+ or something, but this works.
parent
9489c171e4
commit
51fcae2d8b
|
@ -281,6 +281,8 @@ TUPLE: raw-port < port addr ;
|
||||||
|
|
||||||
HOOK: (raw) io-backend ( addr -- raw )
|
HOOK: (raw) io-backend ( addr -- raw )
|
||||||
|
|
||||||
|
HOOK: (broadcast) io-backend ( datagram -- datagram )
|
||||||
|
|
||||||
HOOK: (receive-unsafe) io-backend ( n buf datagram -- size addrspec )
|
HOOK: (receive-unsafe) io-backend ( n buf datagram -- size addrspec )
|
||||||
|
|
||||||
ERROR: invalid-port object ;
|
ERROR: invalid-port object ;
|
||||||
|
@ -363,6 +365,9 @@ SYMBOL: remote-address
|
||||||
>>addr
|
>>addr
|
||||||
] with-destructors ;
|
] with-destructors ;
|
||||||
|
|
||||||
|
: <broadcast> ( datagram -- datagram )
|
||||||
|
<datagram> (broadcast) ;
|
||||||
|
|
||||||
: receive-unsafe ( n buf datagram -- count addrspec )
|
: receive-unsafe ( n buf datagram -- count addrspec )
|
||||||
check-receive
|
check-receive
|
||||||
[ (receive-unsafe) ] [ addr>> ] bi parse-sockaddr ; inline
|
[ (receive-unsafe) ] [ addr>> ] bi parse-sockaddr ; inline
|
||||||
|
|
|
@ -125,6 +125,9 @@ M: unix (datagram)
|
||||||
M: unix (raw)
|
M: unix (raw)
|
||||||
[ SOCK_RAW server-socket-fd ] with-destructors ;
|
[ SOCK_RAW server-socket-fd ] with-destructors ;
|
||||||
|
|
||||||
|
M: unix (broadcast)
|
||||||
|
dup handle>> SOL_SOCKET SO_BROADCAST set-socket-option ;
|
||||||
|
|
||||||
:: do-receive ( n buf port -- count sockaddr )
|
:: do-receive ( n buf port -- count sockaddr )
|
||||||
port addr>> empty-sockaddr/size :> ( sockaddr len )
|
port addr>> empty-sockaddr/size :> ( sockaddr len )
|
||||||
port handle>> handle-fd ! s
|
port handle>> handle-fd ! s
|
||||||
|
|
|
@ -8,6 +8,9 @@ windows.winsock locals ;
|
||||||
FROM: namespaces => get ;
|
FROM: namespaces => get ;
|
||||||
IN: io.sockets.windows
|
IN: io.sockets.windows
|
||||||
|
|
||||||
|
: set-socket-option ( handle level opt -- )
|
||||||
|
1 int <ref> dup byte-length setsockopt socket-error ;
|
||||||
|
|
||||||
M: windows addrinfo-error ( n -- )
|
M: windows addrinfo-error ( n -- )
|
||||||
winsock-return-check ;
|
winsock-return-check ;
|
||||||
|
|
||||||
|
@ -86,6 +89,9 @@ M: windows (datagram) ( addrspec -- handle )
|
||||||
M: windows (raw) ( addrspec -- handle )
|
M: windows (raw) ( addrspec -- handle )
|
||||||
[ SOCK_RAW server-socket ] with-destructors ;
|
[ SOCK_RAW server-socket ] with-destructors ;
|
||||||
|
|
||||||
|
M: windows (broadcast) ( datagram -- datagram )
|
||||||
|
dup handle>> SOL_SOCKET SO_BROADCAST set-socket-option ;
|
||||||
|
|
||||||
: malloc-int ( n -- alien )
|
: malloc-int ( n -- alien )
|
||||||
int <ref> malloc-byte-array ; inline
|
int <ref> malloc-byte-array ; inline
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue