place-tcp-unit.rkt 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #lang racket/base
  2. (require net/tcp-sig
  3. (prefix-in tcp: racket/tcp)
  4. racket/unit)
  5. (provide
  6. make-place-tcp@)
  7. (struct place-tcp-listener ())
  8. (define (make-place-tcp@ accept-ch)
  9. (unit
  10. (import)
  11. (export tcp^)
  12. (define (tcp-abandon-port p)
  13. (tcp:tcp-abandon-port p))
  14. (define (tcp-accept _l)
  15. (apply values (channel-get accept-ch)))
  16. (define (tcp-accept/enable-break _l)
  17. (apply values (sync/enable-break accept-ch)))
  18. (define (tcp-accept-ready? _l)
  19. (error 'tcp-accept-ready? "not supported"))
  20. (define (tcp-addresses _p [port-numbers? #f])
  21. (if port-numbers?
  22. (values "127.0.0.1" 1 "127.0.0.1" 0)
  23. (values "127.0.0.1" "127.0.0.1")))
  24. (define (tcp-close _l)
  25. (void))
  26. (define (tcp-connect _hostname
  27. _port-no
  28. [_local-hostname #f]
  29. [_local-port-no #f])
  30. (error 'tcp-connect "not supported"))
  31. (define (tcp-connect/enable-break _hostname
  32. _port-no
  33. [_local-hostname #f]
  34. [_local-port-no #f])
  35. (error 'tcp-connect/enable-break "not supported"))
  36. (define (tcp-listen _port-no
  37. [_backlog 4]
  38. [_reuse? #f]
  39. [_hostname #f])
  40. (place-tcp-listener))
  41. (define (tcp-listener? l)
  42. (place-tcp-listener? l))))