138 auto now = std::chrono::high_resolution_clock::now();
141 double seconds = std::chrono::duration_cast<std::chrono::microseconds>(now -
m_t0).count() / 1000000.;
143 info.set_num_short_chunks_processed(
stats.short_ctr.exchange(0));
144 info.set_num_chunks_processed(
stats.chunk_ctr.exchange(0));
145 info.set_num_subchunks_processed(
stats.subchunk_ctr.exchange(0));
146 info.set_num_blocks_processed(
stats.block_ctr.exchange(0));
148 info.set_rate_blocks_processed(info.num_blocks_processed() / seconds / 1000.);
149 info.set_rate_chunks_processed(info.num_chunks_processed() / seconds / 1000.);
151 info.set_num_short_chunks_processed_with_error(
stats.error_short_ctr.exchange(0));
152 info.set_num_chunks_processed_with_error(
stats.error_chunk_ctr.exchange(0));
153 info.set_num_subchunks_processed_with_error(
stats.error_subchunk_ctr.exchange(0));
154 info.set_num_blocks_processed_with_error(
stats.error_block_ctr.exchange(0));
155 info.set_num_subchunk_crc_errors(
stats.subchunk_crc_error_ctr.exchange(0));
156 info.set_num_subchunk_trunc_errors(
stats.subchunk_trunc_error_ctr.exchange(0));
157 info.set_num_subchunk_errors(
stats.subchunk_error_ctr.exchange(0));
160 <<
" Parser stats ->"
161 <<
" Blocks: " << info.num_blocks_processed() <<
" Block rate: " << info.rate_blocks_processed()
163 <<
" Chunks: " << info.num_chunks_processed() <<
" Chunk rate: " << info.rate_chunks_processed()
165 <<
" Shorts: " << info.num_short_chunks_processed() <<
" Subchunks:" << info.num_subchunks_processed()
166 <<
" Error Chunks: " << info.num_chunks_processed_with_error()
167 <<
" Error Shorts: " << info.num_short_chunks_processed_with_error()
168 <<
" Error Subchunks: " << info.num_subchunks_processed_with_error()
169 <<
" Error Block: " << info.num_blocks_processed_with_error();