[racket] Fwd: Using get-pure-port

From: Danny Yoo (dyoo at cs.wpi.edu)
Date: Thu Aug 18 14:01:27 EDT 2011

(Sorry; forgot to reply-to-all; forwarding to the racket-users list as well)


---------- Forwarded message ----------
From: Danny Yoo <dyoo at cs.wpi.edu>
Date: Thu, Aug 18, 2011 at 2:00 PM
Subject: Re: [racket] Using get-pure-port
To: Shogo Yamazaki <moquo2.718 at gmail.com>


On Thu, Aug 18, 2011 at 11:45 AM, Shogo Yamazaki <moquo2.718 at gmail.com> wrote:
> Hi,
>
> I have a question about using get/post-pure-port.
> I'm using Racket v5.1.2.3 and FreeBSD 8.2.
> It seems tcp-port is still opened after I used get-pure-port.
> How can I close this? The code is below.

[code omitted]

Hmm...  Do you see the same issue if you use a Racket custodian to
clean up the resources?


The Systems tutorial talks about custodians a bit:

   http://docs.racket-lang.org/more/index.html#(part._.Terminating_.Connections)


Your code would't have to change too much: it'd look something like:

   (define cust (make-custodian))
   (parameterize ([current-custodian cust])

       ;; .. your code, which opens ports and does other stuff

       (custodian-shutdown-all cust))


If you open ports in the context of a custodian, that custodian takes
responsibility for cleaning up resources when custodian-shutdown-all
gets called.



Posted on the users mailing list.