|
FlatCityBuf C++ reader 0.8.0
Native C++17 reader for FlatCityBuf, the cloud-optimized CityJSON format
|
Caching decorator: over-fetches to min_req_size and serves subsequent reads inside the cached window without touching the inner reader.
More...
#include <fcb/range_reader.hpp>
Public Member Functions | |
| BufferedRangeReader (std::shared_ptr< RangeReader > inner, std::uint64_t min_req_size) | |
| std::uint64_t | total_size () override |
| Total byte length of the resource. | |
| std::vector< std::uint8_t > | read (std::uint64_t offset, std::uint64_t length) override |
Read length bytes at offset, subject to the contract above. | |
| void | read_batch (std::vector< RangeRequest > &requests) override |
| Fill every request, preserving order. | |
Public Member Functions inherited from fcb::RangeReader | |
| virtual | ~RangeReader ()=default |
Caching decorator: over-fetches to min_req_size and serves subsequent reads inside the cached window without touching the inner reader.
This is what makes HTTP traversal cheap while leaving file traversal unchanged.
OWNERSHIP: this is a PER-QUERY object. Each query (read_header, select_all, select_bbox, select_attr) constructs its own with the min_req_size appropriate to its phase, and discards it when done. Never wrap once and mutate the window size later – that makes concurrent iterators silently alter each other's buffering policy and invites a decorator wrapping a decorator. Hence there is no set_min_req_size.
Definition at line 95 of file range_reader.hpp.
| fcb::BufferedRangeReader::BufferedRangeReader | ( | std::shared_ptr< RangeReader > | inner, |
| std::uint64_t | min_req_size | ||
| ) |
Definition at line 48 of file range_reader.cpp.
|
overridevirtual |
Read length bytes at offset, subject to the contract above.
Implements fcb::RangeReader.
Definition at line 82 of file range_reader.cpp.
References offset.
|
overridevirtual |
Fill every request, preserving order.
Transports that can pipeline or multiplex should override this; the default is a sequential loop.
Reimplemented from fcb::RangeReader.
Definition at line 98 of file range_reader.cpp.
References index, fcb::RangeRequest::offset, and offset.
|
overridevirtual |
Total byte length of the resource.
This is a REQUIRED bounds/security contract, not a convenience: every computed section offset and range request is validated against it, so a corrupt header cannot make the core read or allocate out of bounds. (It is NOT needed to size the last feature – every feature carries its own 4-byte size prefix.)
Implements fcb::RangeReader.
Definition at line 52 of file range_reader.cpp.