1#ifndef SISCO_SISCO_READER_H_
2#define SISCO_SISCO_READER_H_
54 void Open(std::span<std::byte> header_data);
68 void Request(
size_t baseline_index,
size_t n_values);
Internal header file for the Lane.
The Lane is an efficient cyclic buffer that is synchronized.
A queue with a limited size and the ability to query only specific values.
std::set< Result > result_queue
std::list< Chunk > chunks_
std::vector< std::thread > result_workers_
aocommon::Lane< Chunk > decompress_lane_
void GetNextResult(std::span< std::complex< float > > data)
SiscoReader(SiscoReader &&)=default
size_t GetRequestBufferSize() const
size_t results_in_chunk_counter_
void Open(std::span< std::byte > header_data)
void GetNextChunk(Chunk &chunk)
std::set< Chunk > decompressed_queue
std::map< size_t, BaselineData > baseline_data_
Indexed by baseline_index.
size_t chunk_item_position_
size_t ReadChunk(std::vector< std::byte > &buffer)
Read current chunk and returns the decompressed size.
SiscoReader & operator=(SiscoReader &&)=default
std::set< size_t > busy_baselines_
ConditionalQueue< RequestData > request_queue_
aocommon::Lane< Chunk > read_lane_
static constexpr size_t kRequestBufferSize
void Request(size_t baseline_index, size_t n_values)
This is an interface that allow parallelism over the decompression.
SiscoReader(const std::string &filename)
aocommon::Lane< Result > result_lane_
CompressorState real_state_
CompressorState imaginary_state_
std::vector< std::byte > decompress_buffer
bool operator<(const Chunk &rhs) const
size_t n_results_in_chunk
std::vector< std::byte > read_buffer
size_t n_results_processed
std::vector< float > real_data
bool operator<(const Result &rhs) const
std::vector< float > imaginary_data