[plt-scheme] Re: peek-bytes-avail!* caching results???
I found my issue. peek-bytes-avail!* works fine. The issue was that
the system clock ran the opposite way then I would have expected.
example:
> (require (lib "19.ss" "srfi"))
> (time-nanosecond (current-time))(time-nanosecond (current-time))(time-nanosecond (current-time))
2940000
2850000
2780000
(time is counting down, not up) This was causing the delays. Instead
i now just use:
(current-inexact-milliseconds)
and things work fine.
Corey
On 3/11/07, Corey Sweeney <corey.sweeney at gmail.com> wrote:
> I'm getting a wierd phenominon that cycles every 500ms. does
> peek-bytes-avail!* cache it's results for 500ms?
>
> This is my setup: I'm using
>
> (define data-log-output (open-output-file data-log-filename 'replace))
> (file-stream-buffer-mode data-log-output 'none)
>
> to write lines to a file 250 times a second. I added a "flush", and
> everything seems to work ok, as i can "tail -f --sleep-interval=.001
> {logfile}" and see the updates happen very quickly
>
> I also use:
>
> (define data-log-input (open-input-file data-log-filename))
> (file-stream-buffer-mode data-log-input 'none)
>
> to read the file and each time a new line shows up, transmit it over a
> network port with:
>
> (define (ready-to-read? input-port)
> (define dummy (make-bytes 1))
> (define dummy2 (port-progress-evt input-port))
> (not (zero? (peek-bytes-avail!* dummy 0 dummy2 input-port))))
>
> (if (ready-to-read? data-log-input)
> (display (read data-log-input) network-out-port))
>
> it all works, however it only seems to write to the network in a big
> pulse about every 500ms. Does peek-bytes-avail!* ever cache it's
> results, and report 0 when it's called, if it was just called
> recently?
>
> Corey
>
> --
> ((lambda (y) (y y)) (lambda (y) (y y)))
>
--
((lambda (y) (y y)) (lambda (y) (y y)))