* called periodically or on new data changes (file changed, new data in the socket, etc.) */
| 555 | * called periodically or on new data changes (file changed, new data in the socket, etc.) |
| 556 | */ |
| 557 | void LiveDataSource::read() { |
| 558 | DEBUG(Q_FUNC_INFO); |
| 559 | if (!m_filter) |
| 560 | return; |
| 561 | |
| 562 | if (m_reading) |
| 563 | return; |
| 564 | |
| 565 | static bool firstRead = true; |
| 566 | |
| 567 | m_reading = true; |
| 568 | |
| 569 | // initialize the device (file, socket, serial port) when calling this function for the first time |
| 570 | if (!m_prepared) { |
| 571 | initDevice(); |
| 572 | m_prepared = true; |
| 573 | } |
| 574 | |
| 575 | switch (m_sourceType) { |
| 576 | case SourceType::FileOrPipe: |
| 577 | DEBUG("Reading FileOrPipe. type = " << ENUM_TO_STRING(AbstractFileFilter, FileType, m_fileType)); |
| 578 | switch (m_fileType) { |
| 579 | case AbstractFileFilter::FileType::Ascii: |
| 580 | if (m_readingType == LiveDataSource::ReadingType::WholeFile) { |
| 581 | static_cast<AsciiFilter*>(m_filter) |
| 582 | ->readFromDevice(*m_device, AbstractFileFilter::ImportMode::Replace, AbstractFileFilter::ImportMode::Replace, 0, -1, 0); |
| 583 | } else { |
| 584 | qint64 bytes = static_cast<AsciiFilter*>(m_filter)->readFromDevice(*m_device, |
| 585 | AbstractFileFilter::ImportMode::Replace, |
| 586 | AbstractFileFilter::ImportMode::Append, |
| 587 | m_bytesRead, |
| 588 | sampleSize(), |
| 589 | m_keepNValues); |
| 590 | m_bytesRead += bytes; |
| 591 | // DEBUG("Read " << bytes << " bytes, in total: " << m_bytesRead); |
| 592 | } |
| 593 | break; |
| 594 | case AbstractFileFilter::FileType::Binary: |
| 595 | // TODO: not implemented yet |
| 596 | // bytes = qSharedPointerCast<BinaryFilter>(m_filter)->readFromLiveDevice(*m_file, this, m_bytesRead); |
| 597 | // m_bytesRead += bytes; |
| 598 | case AbstractFileFilter::FileType::ROOT: |
| 599 | case AbstractFileFilter::FileType::Spice: |
| 600 | // only re-reading of the whole file is supported |
| 601 | m_filter->readDataFromFile(m_fileName, this); |
| 602 | break; |
| 603 | // TODO: other types not implemented yet |
| 604 | case AbstractFileFilter::FileType::XLSX: |
| 605 | case AbstractFileFilter::FileType::Ods: |
| 606 | case AbstractFileFilter::FileType::Image: |
| 607 | case AbstractFileFilter::FileType::HDF5: |
| 608 | case AbstractFileFilter::FileType::VECTOR_BLF: |
| 609 | case AbstractFileFilter::FileType::NETCDF: |
| 610 | case AbstractFileFilter::FileType::FITS: |
| 611 | case AbstractFileFilter::FileType::JSON: |
| 612 | case AbstractFileFilter::FileType::READSTAT: |
| 613 | case AbstractFileFilter::FileType::MATIO: |
| 614 | case AbstractFileFilter::FileType::MCAP: |
no test coverage detected