PasteRack.org
Paste # 59997
2017-11-24 15:18:48

Fork as a new paste.

Paste viewed 68 times.


Embed:

#lang racket
#lang racket
(require "headspace.rkt")
(require "link.rkt")
(require "preview.rkt")
(require racket/unix-socket)

(define (serve path)
  (define listener (unix-socket-listen path))
  (define (loop)
    (accept-and-handle listener)
    (loop))
  (define t (thread loop))
  (λ ()
     (kill-thread t)
     (delete-file path)))

(define (accept-and-handle listener)
  (define-values (in out) (unix-socket-accept listener))
  (thread (λ ()
             (define (loop)
               (match (read in)

                 [(list-rest 'intersect-tags tags)
                  (write (set->list (apply intersect-tags tags)) out)]

                 [(list 'get-tags-for-file file)

                 [(list-rest 'link-file files)
                  (apply link-file files)
                  (write '() out)]

                 [(list 'preview file)
                  (preview file)
                  (write '() out)]

                 [(list 'all-tags)
                  (write (all-tags) out)]

                 [_ (write '() out)])
               (flush-output out)
               (loop))
             (loop))))

(define stop (serve "/tmp/headspace.socket"))

=>

prog:2:0: read: #lang not enabled in the current context
  context...:
   /home/pasterack/racket68/collects/syntax/module-reader.rkt:186:17: body
   /home/pasterack/racket68/collects/syntax/module-reader.rkt:183:2: wrap-internal
   /home/pasterack/racket68/collects/racket/../syntax/module-reader.rkt:65:9: lang:read-syntax
   /home/pasterack/racket68/share/pkgs/scribble-lib/scribble/private/manual-code.rkt:112:0: get-tokens
   /home/pasterack/racket68/share/pkgs/scribble-lib/scribble/private/manual-code.rkt:56:0: typeset-code15
   /home/pasterack/pasterack/tmp/59997/59997code.scrbl: [running body]
   loop
   ...cket/cmdline.rkt:179:51
   /home/pasterack/racket68/share/pkgs/scribble-lib/scribble/run.rkt: [running body]