File interface for data stored in the generated model compression (Sisco) format.
More...
#include <SiscoReader.h>
|
| | SiscoReader (const std::string &filename) |
| | ~SiscoReader () |
| void | Open (std::span< std::byte > header_data) |
| | Open the file and prepare for decompression.
|
| size_t | GetRequestBufferSize () const |
| void | Request (size_t baseline_index, size_t n_values) |
| | This is an interface that allows parallelism over the decompression.
|
| void | GetNextResult (std::span< std::complex< float > > data) |
| | Retrieve the data associated with an earlier Request() call.
|
| int | PredictLevel () const |
File interface for data stored in the generated model compression (Sisco) format.
Definition at line 25 of file SiscoReader.h.
◆ SiscoReader()
| casacore::sisco::SiscoReader::SiscoReader |
( |
const std::string & | filename | ) |
|
◆ ~SiscoReader()
| casacore::sisco::SiscoReader::~SiscoReader |
( |
| ) |
|
◆ Close()
| void casacore::sisco::SiscoReader::Close |
( |
| ) |
|
|
private |
◆ DecompressChunk()
| void casacore::sisco::SiscoReader::DecompressChunk |
( |
| ) |
|
|
private |
◆ GetNextChunk()
| void casacore::sisco::SiscoReader::GetNextChunk |
( |
Chunk & | chunk | ) |
|
|
private |
◆ GetNextResult()
| void casacore::sisco::SiscoReader::GetNextResult |
( |
std::span< std::complex< float > > | data | ) |
|
Retrieve the data associated with an earlier Request() call.
Results are returned in the same sequence as requested.
◆ GetRequestBufferSize()
| size_t casacore::sisco::SiscoReader::GetRequestBufferSize |
( |
| ) |
const |
|
inline |
◆ Open()
| void casacore::sisco::SiscoReader::Open |
( |
std::span< std::byte > | header_data | ) |
|
Open the file and prepare for decompression.
This method is not thread safe and should be called (and finish) before calling GetNextResult() or Request().
◆ PredictLevel()
| int casacore::sisco::SiscoReader::PredictLevel |
( |
| ) |
const |
|
inline |
◆ ReadChunk()
| size_t casacore::sisco::SiscoReader::ReadChunk |
( |
std::vector< std::byte > & | buffer | ) |
|
|
private |
Read current chunk and returns the decompressed size.
◆ ReadLoop()
| void casacore::sisco::SiscoReader::ReadLoop |
( |
| ) |
|
|
private |
◆ Request()
| void casacore::sisco::SiscoReader::Request |
( |
size_t | baseline_index, |
|
|
size_t | n_values ) |
This is an interface that allows parallelism over the decompression.
To use it, one thread should issue the requests (as fast as possible), while the main thread should obtain the values using GetNextResult(). The Request() method is blocking when the internal buffer of results is full or when all worker threads are busy.
This method is necessary because the compressed files don't store the nr of values per row or baseline_index.
Only one thread should call the Request() function, but that thread may be different than the thread calling GetNextResult().
◆ ResultLoop()
| void casacore::sisco::SiscoReader::ResultLoop |
( |
| ) |
|
|
private |
◆ baseline_data_
| std::map<size_t, BaselineData> casacore::sisco::SiscoReader::baseline_data_ |
|
private |
◆ busy_baselines_
| std::set<size_t> casacore::sisco::SiscoReader::busy_baselines_ |
|
private |
◆ chunk_item_position_
| size_t casacore::sisco::SiscoReader::chunk_item_position_ |
|
private |
◆ chunk_sequence
| size_t casacore::sisco::SiscoReader::chunk_sequence |
|
private |
◆ chunks_
| std::list<Chunk> casacore::sisco::SiscoReader::chunks_ |
|
private |
◆ current_chunk_
| Chunk* casacore::sisco::SiscoReader::current_chunk_ |
|
private |
◆ decompress_lane_
◆ decompressed_queue
| std::set<Chunk> casacore::sisco::SiscoReader::decompressed_queue |
|
private |
◆ file_
| std::ifstream casacore::sisco::SiscoReader::file_ |
|
private |
◆ filename_
| std::string casacore::sisco::SiscoReader::filename_ |
|
private |
◆ kRequestBufferSize
| size_t casacore::sisco::SiscoReader::kRequestBufferSize |
|
staticconstexprprivate |
◆ mutex_
| std::mutex casacore::sisco::SiscoReader::mutex_ |
|
private |
◆ open_
| bool casacore::sisco::SiscoReader::open_ |
|
private |
◆ predict_level_
| int casacore::sisco::SiscoReader::predict_level_ |
|
private |
◆ read_lane_
◆ read_thread_
| std::thread casacore::sisco::SiscoReader::read_thread_ |
|
private |
◆ request_queue_
◆ result_counter_
| size_t casacore::sisco::SiscoReader::result_counter_ |
|
private |
◆ result_lane_
◆ result_queue
| std::set<Result> casacore::sisco::SiscoReader::result_queue |
|
private |
◆ result_sequence_
| size_t casacore::sisco::SiscoReader::result_sequence_ |
|
private |
◆ result_workers_
| std::vector<std::thread> casacore::sisco::SiscoReader::result_workers_ |
|
private |
◆ results_in_chunk_counter_
| size_t casacore::sisco::SiscoReader::results_in_chunk_counter_ |
|
private |
The documentation for this class was generated from the following file: