All Projects → fukamachi → smart-buffer

fukamachi / smart-buffer

Licence: other
Smart octets buffer.

Programming Languages

common lisp
692 projects

smart-buffer

Build Status Coverage Status

Smart-buffer provides an output buffer which changes the destination depending on content size.

  • In-memory buffer for small data
  • Temporary files on disk for big data

In-memory buffer is fast to read/write, however, it consumes much memory if the data can be large. On the other hand, files on disk are slower. Smart-buffer would be useful when the buffer must satisfy these two contradicting demands.

Usage

with-smart-buffer returns an in-memory stream or a file stream.

(with-smart-buffer (buffer)
  (write-to-buffer buffer (flex:string-to-octets "foobar")))
;=> #<FLEXI-STREAMS::VECTOR-INPUT-STREAM {100456A9A3}>

(with-smart-buffer (buffer :memory-limit 3)
  (write-to-buffer buffer (flex:string-to-octets "foobar")))
;=> #<SB-SYS:FD-STREAM for "file /private/var/folders/x3/8n07clk15tq3m4y6_yrmjy6c0000gn/T/tmpAR3FSGEY.tmp" {1005D06503}>

Author

Copyright

Copyright (c) 2015 Eitaro Fukamachi ([email protected])

License

Licensed under the BSD 3-Clause License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].