documentation for make-async-prompt-tag
[8sync.git] / loopy.scm
index b955c4a269d6c4ab5518d4dc682a125d91b8ea68..1d2352a9e1f18e97b42db38af32bceb7a922ae5f 100644 (file)
--- a/loopy.scm
+++ b/loopy.scm
@@ -77,6 +77,9 @@
   (time agenda-time))
 
 (define (make-async-prompt-tag)
+  "Make an async prompt tag for an agenda.
+
+Generally done automatically for the user through (make-agenda)."
   (make-prompt-tag "prompt"))
 
 (define* (make-agenda #:key
@@ -87,6 +90,8 @@
                       (except-port-map (make-hash-table))
                       (schedule (make-schedule))
                       (time (gettimeofday)))
+  ;; TODO: document arguments
+  "Make a fresh agenda."
   (make-agenda-intern queue prompt
                       read-port-map write-port-map except-port-map
                       schedule time))
@@ -158,12 +163,12 @@ run (time-segment-right-format) first."
   (sec time-delta-sec)
   (usec time-delta-usec))
 
-(define* (make-time-delta sec #:optional usec)
+(define* (make-time-delta sec #:optional (usec 0))
   "Make a <time-delta> of SEC seconds and USEC microseconds.
 
 This is used primarily so the agenda can recognize RUN-REQUEST objects
 which are meant "
-  (make-time-delta-intern sec (or usec 0)))
+  (make-time-delta-intern sec usec))
 
 (define tdelta make-time-delta)
 
@@ -307,36 +312,6 @@ Will produce (0 . 0) instead of a negative number, if needed."
    segments))
 
 
-\f
-;;; Port handling
-;;; =============
-
-(define (make-port-mapping)
-  (make-hash-table))
-
-(define* (port-mapping-set! port-mapping port #:optional read write except)
-  "Sets port-mapping for reader / writer / exception handlers"
-  (if (not (or read write except))
-      (throw 'no-handlers-given "No handlers given for port" port))
-  (hashq-set! port-mapping port
-              `#(,read ,write ,except)))
-
-(define (port-mapping-remove! port-mapping port)
-  (hashq-remove! port-mapping port))
-
-;; TODO: This is O(n), I'm pretty sure :\
-;; ... it might be worthwhile for us to have a
-;;   port-mapping record that keeps a count of how many
-;;   handlers (maybe via a promise?)
-(define (port-mapping-empty? port-mapping)
-  "Is this port mapping empty?"
-  (eq? (hash-count (const #t) port-mapping) 0))
-
-(define (port-mapping-non-empty? port-mapping)
-  "Whether this port-mapping contains any elements"
-  (not (port-mapping-empty? port-mapping)))
-
-
 \f
 ;;; Request to run stuff
 ;;; ====================
@@ -381,6 +356,7 @@ Will produce (0 . 0) instead of a negative number, if needed."
 (define %current-agenda (make-parameter #f))
 
 (define (update-agenda-from-select! agenda)
+  "Potentially (select) on ports specified in agenda, adding items to queue"
   (define (hash-keys hash)
     (hash-map->list (lambda (k v) k) hash))
   (define (get-wait-time)
@@ -459,6 +435,8 @@ Will produce (0 . 0) instead of a negative number, if needed."
                        #:key stop-condition
                        (get-time gettimeofday)
                        (handle-ports update-agenda-from-select!))
+  ;; TODO: Document fields
+  "Start up the AGENDA"
   (let loop ((agenda agenda))
     (let ((agenda   
            ;; @@: Hm, maybe here would be a great place to handle