Commits

Moritz Heidkamp committed dca091c

implement flush-channel-to-output-port as the inverse of siphon-input-channel

Comments (0)

Files changed (2)

 (make-channel
  ;; derivators
  fork-channel fold-channel map-channel filter-channel
- siphon-channel siphon-input-port
+ siphon-channel siphon-input-port flush-channel-to-output-port
 
  ;; operations
  channel-enqueue channel-receive channel-receive/delay
                    (channel-enqueue channel message))))
           channel))
 
+(define (flush-channel-to-output-port channel port write)
+  (on-channel-receive
+   channel
+   (lambda (message)
+     (write message port))))
+
 )
 
   (test '(this is a test) (channel-messages channel)))
 
+(test-group "flush-channel-to-output-port"
+  (define port (open-output-string))
+  (define channel (make-channel 'foo 'bar))
+  (flush-channel-to-output-port channel port write)
+  (test "foobar" (get-output-string port))
+  (channel-enqueue channel 'baz)
+  (test "foobarbaz" (get-output-string port)))
+
 (test-end)
 
 (test-exit)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.