Clean up UDP a little
							parent
							
								
									47e991649c
								
							
						
					
					
						commit
						417e475857
					
				| 
						 | 
				
			
			@ -162,6 +162,11 @@ TUPLE: WSARecvFrom-args port
 | 
			
		|||
       s* lpBuffers* dwBufferCount* lpNumberOfBytesRecvd*
 | 
			
		||||
       lpFlags* lpFrom* lpFromLen* lpOverlapped* lpCompletionRoutine* ;
 | 
			
		||||
 | 
			
		||||
: make-receive-buffer ( -- WSABUF )
 | 
			
		||||
    "WSABUF" malloc-object dup free-always
 | 
			
		||||
    default-buffer-size get over set-WSABUF-len
 | 
			
		||||
    default-buffer-size get malloc dup free-always over set-WSABUF-buf ;
 | 
			
		||||
 | 
			
		||||
: init-WSARecvFrom ( datagram WSARecvFrom -- )
 | 
			
		||||
    [ set-WSARecvFrom-args-port ] 2keep
 | 
			
		||||
    [
 | 
			
		||||
| 
						 | 
				
			
			@ -172,11 +177,7 @@ TUPLE: WSARecvFrom-args port
 | 
			
		|||
        2dup >r malloc dup free-always r> set-WSARecvFrom-args-lpFrom*
 | 
			
		||||
        >r malloc-int dup free-always r> set-WSARecvFrom-args-lpFromLen*
 | 
			
		||||
    ] keep
 | 
			
		||||
    "WSABUF" malloc-object dup free-always
 | 
			
		||||
    2dup swap set-WSARecvFrom-args-lpBuffers*
 | 
			
		||||
    default-buffer-size get [ malloc dup free-always ] keep
 | 
			
		||||
    pick set-WSABUF-len
 | 
			
		||||
    swap set-WSABUF-buf
 | 
			
		||||
    make-receive-buffer over set-WSARecvFrom-args-lpBuffers*
 | 
			
		||||
    1 over set-WSARecvFrom-args-dwBufferCount*
 | 
			
		||||
    0 malloc-int dup free-always over set-WSARecvFrom-args-lpFlags*
 | 
			
		||||
    0 malloc-int dup free-always over set-WSARecvFrom-args-lpNumberOfBytesRecvd*
 | 
			
		||||
| 
						 | 
				
			
			@ -215,26 +216,29 @@ TUPLE: WSASendTo-args port
 | 
			
		|||
       s* lpBuffers* dwBufferCount* lpNumberOfBytesSent*
 | 
			
		||||
       dwFlags* lpTo* iToLen* lpOverlapped* lpCompletionRoutine* ;
 | 
			
		||||
 | 
			
		||||
: make-send-buffer ( packet -- WSABUF )
 | 
			
		||||
    "WSABUF" malloc-object dup free-always
 | 
			
		||||
    over malloc-byte-array dup free-always over set-WSABUF-buf
 | 
			
		||||
    swap length over set-WSABUF-len ;
 | 
			
		||||
 | 
			
		||||
: init-WSASendTo ( packet addrspec datagram WSASendTo -- )
 | 
			
		||||
    [ set-WSASendTo-args-port ] 2keep
 | 
			
		||||
    [
 | 
			
		||||
        >r delegate port-handle win32-file-handle r>
 | 
			
		||||
        set-WSASendTo-args-s*
 | 
			
		||||
    ] keep [
 | 
			
		||||
        >r port-handle win32-file-handle r> set-WSASendTo-args-s*
 | 
			
		||||
    ] keep
 | 
			
		||||
    [
 | 
			
		||||
        >r make-sockaddr/size >r
 | 
			
		||||
        malloc-byte-array dup free-always
 | 
			
		||||
        r> r>
 | 
			
		||||
        [ set-WSASendTo-args-iToLen* ] keep
 | 
			
		||||
        set-WSASendTo-args-lpTo*
 | 
			
		||||
    ] keep [
 | 
			
		||||
        "WSABUF" malloc-object dup free-always
 | 
			
		||||
        dup rot set-WSASendTo-args-lpBuffers*
 | 
			
		||||
        swap [ malloc-byte-array dup free-always ] keep length
 | 
			
		||||
        rot [ set-WSABUF-len ] keep
 | 
			
		||||
        set-WSABUF-buf
 | 
			
		||||
    ] keep
 | 
			
		||||
    [
 | 
			
		||||
        >r make-send-buffer r> set-WSASendTo-args-lpBuffers*
 | 
			
		||||
    ] keep
 | 
			
		||||
    1 over set-WSASendTo-args-dwBufferCount*
 | 
			
		||||
    0 over set-WSASendTo-args-dwFlags*
 | 
			
		||||
    0 <uint> over set-WSASendTo-args-lpNumberOfBytesSent*
 | 
			
		||||
    (make-overlapped) swap set-WSASendTo-args-lpOverlapped* ;
 | 
			
		||||
 | 
			
		||||
: WSASendTo-continuation ( WSASendTo -- )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue