mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-11 23:07:36 +02:00
WIP
This commit is contained in:
parent
fef4076985
commit
eae7dc12cf
1 changed files with 27 additions and 1 deletions
28
srfi/106.sld
28
srfi/106.sld
|
@ -29,7 +29,7 @@
|
||||||
)
|
)
|
||||||
(begin
|
(begin
|
||||||
(define *socket-object-type* '%socket-object-type%)
|
(define *socket-object-type* '%socket-object-type%)
|
||||||
|
(define (socket->fd obj) (cdr obj))
|
||||||
(define (socket? obj)
|
(define (socket? obj)
|
||||||
(and (pair? obj) (eq? (car obj) *socket-object-type*)))
|
(and (pair? obj) (eq? (car obj) *socket-object-type*)))
|
||||||
|
|
||||||
|
@ -106,6 +106,32 @@
|
||||||
freeaddrinfo(servinfo); // all done with this structure
|
freeaddrinfo(servinfo); // all done with this structure
|
||||||
return_closcall1(data, k, obj_int2obj(sockfd)); ")
|
return_closcall1(data, k, obj_int2obj(sockfd)); ")
|
||||||
|
|
||||||
|
(define (socket-shutdown sock how)
|
||||||
|
(if (and (socket? sock) (integer? how))
|
||||||
|
(%socket-shutdown (socket->fd sock) how)))
|
||||||
|
|
||||||
|
(define-c %socket-shutdown
|
||||||
|
"(void *data, int argc, closure _, object k, object sockfd, object how)"
|
||||||
|
" shutdown(obj_obj2int(sockfd), obj_obj2int(how));
|
||||||
|
return_closcall1(data, k, boolean_t);")
|
||||||
|
|
||||||
|
(define (socket-close sock)
|
||||||
|
(if (socket? sock)
|
||||||
|
(%socket-close (socket->fd sock))))
|
||||||
|
|
||||||
|
(define-c %socket-close
|
||||||
|
"(void *data, int argc, closure _, object k, object sockfd)"
|
||||||
|
" close(obj_obj2int(sockfd));
|
||||||
|
return_closcall1(data, k, boolean_t);")
|
||||||
|
|
||||||
|
;; TODO: socket-input-port
|
||||||
|
;; TODO: socket-output-port
|
||||||
|
|
||||||
|
(define (call-with-socket socket proc)
|
||||||
|
(let ((result (proc socket)))
|
||||||
|
(socket-close socket)
|
||||||
|
result))
|
||||||
|
|
||||||
; (define-syntax address-family
|
; (define-syntax address-family
|
||||||
; (er-macro-transformer
|
; (er-macro-transformer
|
||||||
; (lambda (expr rename compare)
|
; (lambda (expr rename compare)
|
||||||
|
|
Loading…
Add table
Reference in a new issue