casacore
Loading...
Searching...
No Matches
Classes | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
casacore::sisco::SiscoReader Class Reference

File interface for data stored in the generated model compression (Sisco) format. More...

#include <SiscoReader.h>

Classes

struct  BaselineData
 
struct  Chunk
 
struct  RequestData
 
struct  Result
 

Public Member Functions

 SiscoReader (const std::string &filename)
 
 SiscoReader (SiscoReader &&)=default
 
 ~SiscoReader ()
 
SiscoReaderoperator= (SiscoReader &&)=default
 
void Open (std::span< std::byte > header_data)
 
size_t GetRequestBufferSize () const
 
void Request (size_t baseline_index, size_t n_values)
 This is an interface that allow parallelism over the decompression.
 
void GetNextResult (std::span< std::complex< float > > data)
 
int PredictLevel () const
 

Private Member Functions

void Close ()
 
void ResultLoop ()
 
void ReadLoop ()
 
void DecompressChunk ()
 
void GetNextChunk (Chunk &chunk)
 
size_t ReadChunk (std::vector< std::byte > &buffer)
 Read current chunk and returns the decompressed size.
 

Private Attributes

std::set< Chunkdecompressed_queue
 
Chunkcurrent_chunk_
 
std::list< Chunkchunks_
 
int predict_level_
 
size_t chunk_sequence
 
size_t chunk_item_position_
 
size_t result_counter_
 
size_t result_sequence_
 
size_t results_in_chunk_counter_
 
bool open_
 
aocommon::Lane< Chunkread_lane_
 
aocommon::Lane< Chunkdecompress_lane_
 
aocommon::Lane< Resultresult_lane_
 
ConditionalQueue< RequestDatarequest_queue_
 
std::set< Resultresult_queue
 
std::thread read_thread_
 
std::vector< std::thread > result_workers_
 
std::mutex mutex_
 
std::set< size_t > busy_baselines_
 
std::map< size_t, BaselineDatabaseline_data_
 Indexed by baseline_index.
 
std::string filename_
 
std::ifstream file_
 

Static Private Attributes

static constexpr size_t kRequestBufferSize
 

Detailed Description

File interface for data stored in the generated model compression (Sisco) format.

Definition at line 24 of file SiscoReader.h.

Constructor & Destructor Documentation

◆ SiscoReader() [1/2]

casacore::sisco::SiscoReader::SiscoReader ( const std::string &  filename)

◆ SiscoReader() [2/2]

casacore::sisco::SiscoReader::SiscoReader ( SiscoReader &&  )
default

◆ ~SiscoReader()

casacore::sisco::SiscoReader::~SiscoReader ( )

Member Function Documentation

◆ 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)

◆ GetRequestBufferSize()

size_t casacore::sisco::SiscoReader::GetRequestBufferSize ( ) const
inline

Definition at line 56 of file SiscoReader.h.

References kRequestBufferSize.

◆ Open()

void casacore::sisco::SiscoReader::Open ( std::span< std::byte >  header_data)

◆ operator=()

SiscoReader & casacore::sisco::SiscoReader::operator= ( SiscoReader &&  )
default

◆ PredictLevel()

int casacore::sisco::SiscoReader::PredictLevel ( ) const
inline

Definition at line 72 of file SiscoReader.h.

References predict_level_.

◆ 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 allow 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.

◆ ResultLoop()

void casacore::sisco::SiscoReader::ResultLoop ( )
private

Member Data Documentation

◆ baseline_data_

std::map<size_t, BaselineData> casacore::sisco::SiscoReader::baseline_data_
private

Indexed by baseline_index.

Definition at line 125 of file SiscoReader.h.

◆ busy_baselines_

std::set<size_t> casacore::sisco::SiscoReader::busy_baselines_
private

Definition at line 117 of file SiscoReader.h.

◆ chunk_item_position_

size_t casacore::sisco::SiscoReader::chunk_item_position_
private

Definition at line 101 of file SiscoReader.h.

◆ chunk_sequence

size_t casacore::sisco::SiscoReader::chunk_sequence
private

Definition at line 100 of file SiscoReader.h.

◆ chunks_

std::list<Chunk> casacore::sisco::SiscoReader::chunks_
private

Definition at line 97 of file SiscoReader.h.

◆ current_chunk_

Chunk* casacore::sisco::SiscoReader::current_chunk_
private

Definition at line 96 of file SiscoReader.h.

◆ decompress_lane_

aocommon::Lane<Chunk> casacore::sisco::SiscoReader::decompress_lane_
private

Definition at line 109 of file SiscoReader.h.

◆ decompressed_queue

std::set<Chunk> casacore::sisco::SiscoReader::decompressed_queue
private

Definition at line 94 of file SiscoReader.h.

◆ file_

std::ifstream casacore::sisco::SiscoReader::file_
private

Definition at line 127 of file SiscoReader.h.

◆ filename_

std::string casacore::sisco::SiscoReader::filename_
private

Definition at line 126 of file SiscoReader.h.

◆ kRequestBufferSize

constexpr size_t casacore::sisco::SiscoReader::kRequestBufferSize
staticconstexprprivate

Definition at line 93 of file SiscoReader.h.

Referenced by GetRequestBufferSize().

◆ mutex_

std::mutex casacore::sisco::SiscoReader::mutex_
private

Definition at line 116 of file SiscoReader.h.

◆ open_

bool casacore::sisco::SiscoReader::open_
private

Definition at line 106 of file SiscoReader.h.

◆ predict_level_

int casacore::sisco::SiscoReader::predict_level_
private

Definition at line 99 of file SiscoReader.h.

Referenced by PredictLevel().

◆ read_lane_

aocommon::Lane<Chunk> casacore::sisco::SiscoReader::read_lane_
private

Definition at line 108 of file SiscoReader.h.

◆ read_thread_

std::thread casacore::sisco::SiscoReader::read_thread_
private

Definition at line 114 of file SiscoReader.h.

◆ request_queue_

ConditionalQueue<RequestData> casacore::sisco::SiscoReader::request_queue_
private

Definition at line 111 of file SiscoReader.h.

◆ result_counter_

size_t casacore::sisco::SiscoReader::result_counter_
private

Definition at line 102 of file SiscoReader.h.

◆ result_lane_

aocommon::Lane<Result> casacore::sisco::SiscoReader::result_lane_
private

Definition at line 110 of file SiscoReader.h.

◆ result_queue

std::set<Result> casacore::sisco::SiscoReader::result_queue
private

Definition at line 112 of file SiscoReader.h.

◆ result_sequence_

size_t casacore::sisco::SiscoReader::result_sequence_
private

Definition at line 103 of file SiscoReader.h.

◆ result_workers_

std::vector<std::thread> casacore::sisco::SiscoReader::result_workers_
private

Definition at line 115 of file SiscoReader.h.

◆ results_in_chunk_counter_

size_t casacore::sisco::SiscoReader::results_in_chunk_counter_
private

Definition at line 104 of file SiscoReader.h.


The documentation for this class was generated from the following file: