Fastbufs ======== A *fastbuf* is a stream (or file) abstraction optimized for both speed and flexibility. Fastbufs can represent many different kinds of objects: regular files, network sockets, file descriptors in general, or various memory buffers. These objects are handled by different fastbuf *back-ends.* Once you have a fastbuf, you can access it by fuctions similar to those of `stdio.h`, or you can use a variety of fastbuf *front-ends* providing various formatted operations. Please keep in mind that fastbufs do not allow arbitrary mixing of reads and writes on the same stream. If you need to mix them, you have to call @bflush() inbetween and remember that the file position reported by @btell() points after the flushed buffer, which is not necessarily the same as after the data you've really read. Most fastbuf back-ends also participate in the libucw resource management system. If you have a resource pool active, newly created fastbufs are automatically tied to resources in the pool, so when the pool gets cleaned up, the fastbufs are freed, too. The bclose() function is still available and it removes the tie as needed. .Back-ends: - <> - <> - <> - <> - <> - <> - <> - <> - <> .Front-ends: - <> .Other reading: - <> - <> ucw/fastbuf.h ------------- !!ucw/fastbuf.h ucw/fb-socket.h --------------- Fastbufs on network sockets with timeouts. !!ucw/fb-socket.h ucw/ff-unicode.h ---------------- Reading and writing of unicode characters. Invalid codes are replaced by `UNI_REPLACEMENT` when reading. !!ucw/ff-unicode.h ucw/ff-binary.h --------------- !!ucw/ff-binary.h