![]() | ![]() | ![]() | with-queued-streaming | ![]() |
|
| (streamer
)
| [Macro] |
Purpose
Queue streaming during evaluation of forms.
Package :gbbopen
Module :streaming
Arguments and values
| streamer | A streamer | |
| tag | An object (default is nil)
| |
| write-empty-queue-p | A generalized boolean (default is nil)
| |
| forms | An implicit | |
| results | The values returned by evaluating the last form |
Returns
The values returned by evaluating the last form.
Description
Instead of writing changes directly to a streamer's journal
file or network connection, the changes are queued until the last form
has been evaluated. Then the queued changes are written as a block that is
marked with the tag value. Queued streaming is thread-local
(so different threads can have their own open queues at the same time) and
with-queued-streaming forms can be nested within a single thread.
If the value of write-empty-queue-p is true, the streamer queue is
written even if it is empty (and
See also
clear-streamer-queue
read-queued-streaming-block
write-streamer-queue
Examples
Assuming that hyp unit instances are being mirrored to
streamer *streamer*, queue the mirroring of a created hyp tagged
with the space instance (bb hyps)
> (with-queued-streaming (*streamer* (find-space-instance-by-path '(bb hyps)))
(make-instance 'hyp
:location (list x y)
:classification '(:car :truck)
:color ':red
:belief .85
:velocity-range '(5 35)
:supporting-hyps supporting-hyps))
#<hyp 419 (1835 4791) 0.85 [5..35]>
>
Write an empty queue (with tag :empty) to streamer
*streamer*:
> (with-queued-streaming (*streamer* ':empty 't)) nil >
The GBBopen Project
![]() | ![]() | ![]() | with-queued-streaming | ![]() |